Ich bin erst kürzlich mit Python in Kontakt gekommen und suche nach kleinen Aufgaben, um meine Fähigkeiten zu üben. Ich hoffe, dass ich meine Fähigkeiten zur Problemlösung weiterhin in der Praxis ausüben kann.
Der Manager hat mir kürzlich eine sehr mühsame Aufgabe zugewiesen: Ein sehr wichtiges Projekt wurde abgeschlossen, aber es muss geprüft werden (jedenfalls ist es so etwas wie eine Genehmigung) und der gesamte Projektprozess muss eingereicht werden . Dieses Projekt dauerte ein ganzes Jahr, in dem unzählige Besprechungen abgehalten und Pläne gemacht wurden, wodurch viele große und kleine Dokumente (Zeichnungen, Tabellenkalkulationen, Word-Dokumente, Bilder) entstanden. Die aktuelle Aufgabe besteht darin, die 300 zur Prüfung angegebenen Dateien in einem großen Ordner zu finden.
Das geht ganz einfach: Kopieren Sie einfach den Dateinamen in die Tabelle und suchen Sie dann in der Suchleiste danach, um ihn zu finden. Es ist in Ordnung, nach einem Dutzend Dateien zu suchen, aber für mehr als 300 Dateien ist es zu gesperrt, um es manuell zu tun, nicht wahr?
Lösung:
Verwenden Sie Python, um die 300 Dateinamen in der Tabelle zu lesen und die Leerzeichen zu löschen
Jeder Dateiname wird als Parameter an die Windows-Batchdatei (.bat) übergeben, lässt sie suchen, ob die Datei existiert, und gibt das Ergebnis zurück
Python empfängt das Ergebnis und druckt es aus
Überprüfen Sie anhand der Ergebnisse noch einmal manuell, ob der vom Programm identifizierte Name wirklich nicht gefunden wurde und ob es sich nur um einen etwas anderen Namen handelt.
Python-Skript:
1 import openpyxl 2 import os 3 #获得excel文件 4 wb = openpyxl.load_workbook('d:/201704.xlsx') 5 #获取列值 6 def get_delivery(wb): 7 #获取表单名称 8 sheet_names = wb.get_sheet_names() 9 #获取表10 sheet=wb.get_sheet_by_name(sheet_names[0])11 #获取列值,除了第一行的标题12 deliveries = [cellobj.value for cellobj in sheet['C'] if cellobj.value != None]13 return deliveries14 15 my_deliverys = get_delivery(wb)16 nofound = []17 # print(my_delivery)18 for delivery in my_deliverys:19 if os.system('search.bat %s' % delivery) == 1:20 nofound.append(delivery)21 22 for x in nofound:23 if x != '交付物列表:':24 print("没有找到的文件:%s" %x)25 print("程序结束")
search.bat-Code:
1 @echo off 2 3 set "FileName=%1" 4 set "FilePath=D:\" 5 echo 正在搜索文件... 6 7 for /f "delims=" %%b in ('dir /a-d /s /b "%FilePath%\*%FileName%" 2^>nul') do ( 8 if /i "%%~nxb" equ "%FileName%" ( 9 echo,%%b10 )11 )
Ah~~Ich fühle mich plötzlich besser und kann der komplizierten Arbeit entfliehen, mich in der Sonne sonnen und Tee trinken. . .
Das obige ist der detaillierte Inhalt vonPython – Dateien automatisch anhand von Tabellenkalkulationsdaten finden. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!