Maison >développement back-end >Tutoriel Python >python - recherche automatiquement les fichiers en fonction des données d'une feuille de calcul
Je viens d'entrer en contact avec python récemment et je recherche quelques petites tâches pour mettre en pratique mes compétences. J'espère pouvoir continuer à exercer ma capacité de résolution de problèmes dans la pratique.
Le manager m'a récemment confié une tâche très fastidieuse : un projet très important est terminé, mais il doit être audité (de toute façon, c'est quelque chose comme une approbation) et l'ensemble du processus du projet doit être soumis. . Ce projet a duré une année complète, au cours de laquelle d'innombrables réunions ont eu lieu et des plans ont été élaborés, donnant lieu à de nombreux documents (dessins, feuilles de calcul, documents Word, images), petits et grands. La tâche actuelle consiste à rechercher les 300 fichiers spécifiés pour l'audit à partir d'un dossier volumineux.
C'est simple à faire, copiez simplement le nom du fichier dans la feuille de calcul, puis recherchez-le dans la barre de recherche pour le trouver. C'est bien de rechercher une douzaine de fichiers, mais c'est trop verrouillé pour le faire manuellement pour plus de 300 fichiers, n'est-ce pas ?
Solution :
Utilisez python pour lire les 300 noms de fichiers dans la feuille de calcul et effacez les espaces
Chaque nom de fichier est passé en paramètre au fichier batch Windows (.bat), laissez-le rechercher si le fichier existe et renvoie le résultat
python reçoit le résultat et l'imprime
À travers les résultats, confirmez manuellement à nouveau si celui identifié par le programme n'est vraiment pas trouvé, et s'il s'agit simplement d'un nom légèrement différent.
script python :
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("程序结束")
code search.bat :
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~~Je me sens mieux tout d'un coup, et je peux échapper au travail compliqué, me prélasser au soleil et boire du thé. . .
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!