Python – Dateien automatisch anhand von Tabellenkalkulationsdaten finden

巴扎黑
Freigeben: 2017-06-23 16:01:04
Original
2398 Leute haben es durchsucht

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:

  1. Verwenden Sie Python, um die 300 Dateinamen in der Tabelle zu lesen und die Leerzeichen zu löschen

  2. 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

  3. Python empfängt das Ergebnis und druckt es aus

  4. Ü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("程序结束")
Nach dem Login kopieren

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 )
Nach dem Login kopieren

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!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage