最近剛接觸python,找點小任務來練練手,希望自己在練習中不斷的鍛鍊自己解決問題的能力。
經理最近又佈置了一個很繁瑣的任務給我:有一項很重大的專案做完了,但是要過審計(反正就是類似的審批之類的事情),要提交整個專案的過程性文件。這個專案做了整整有一年,其中的開了無數次會議,定了無數次方案,所以也形成了大大小小的很多個文件(圖紙,電子表格,word文檔,圖像)。現在的任務就是要從一個很大資料夾中找出審計要的指定的300個文件。
這件事有手乾也很簡單,就是複製電子表格中的檔案名,然後到搜尋欄中去搜尋它,找到它。十來個文件找還好,300多個手動乾就太反鎖了,不是嗎?
解決想法:
透過python去讀取電子表格中的300個檔案名稱並清除空格
將每個檔案名稱作為參數傳給windows的批次檔(.bat),讓它去尋找檔案是否存在,並將結果傳回
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("程序结束")
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 )
以上是python-根據電子表格的資料自動查找文件的詳細內容。更多資訊請關注PHP中文網其他相關文章!