ホームページ >バックエンド開発 >Python チュートリアル >Python - スプレッドシートデータに基づいてファイルを自動的に検索します
最近 Python に触れたばかりで、スキルを練習するための小さなタスクを探しています。実践で問題解決能力を発揮し続けられることを願っています。
マネージャーは最近私に非常に面倒なタスクを割り当てました。非常に重要なプロジェクトは完了しましたが、監査を受ける必要があり (とにかく、承認のようなものです)、プロジェクト全体のプロセス文書を提出する必要があります。このプロジェクトは丸 1 年続き、その間に数え切れないほどの会議が開催され、計画が作成され、大小さまざまな多くのドキュメント (図面、スプレッドシート、Word 文書、画像) が作成されました。現在のタスクは、監査用に指定された 300 個のファイルを大きなフォルダーから検索することです。
手動で行うのは簡単です。スプレッドシートにファイル名をコピーし、検索バーで検索して見つけます。数十個のファイルを検索するのは問題ありませんが、300 個を超えるファイルを手動で検索するにはロックがかかりすぎますよね。
解決策:
Pythonを使用してスプレッドシート内の300個のファイル名を読み取り、スペースをクリアします
各ファイル名をパラメータとしてWindowsバッチファイル(.bat)に渡し、ファイルが存在するかどうかを確認させますそして結果を
pythonに返して、結果を受け取って出力
した後、その結果を通して、特定されたプログラムが本当に見つからないのか、あるいは単に名前が少し違うだけなのかを手動で再度確認します。
python script:
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 )
あ〜〜急に気分が良くなり、面倒な作業から抜け出して日向ぼっこしたりお茶を飲んだりすることができます。 。 。
以上がPython - スプレッドシートデータに基づいてファイルを自動的に検索しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。