swim

最近刚接触python,找点小任务来练练手,希望自己在实践中不断的锻炼自己解决问题的能力。

经理最近又布置了一个很繁琐的任务给我:有一项很重大的项目做完了,但是要过审计(反正就是类似的审批之类的事情),要提交整个项目的过程性文件。这个项目做了整整有一年,其中的开了无数次会议,定了无数次方案,所以也形成了大大小小的很多个文件(图纸,电子表格,word文档,图像)。现在的任务就是要从一个很大文件夹中找出审计要的指定的300个文件。

这件事有手干也很简单,就是复制电子表格中的文件名,然后到搜索栏中去搜索它,找到它。十来个文件找找还好,300多个手动干就太反锁了,不是吗?

解决思路:

  1. 通过python去读取电子表格中的300个文件名并清除空格
  2. 将每个文件名作为参数传给windows的批处理文件(.bat),让它去查找文件是否存在,并将结果返回
  3. python 接到结果打印出来
  4. 通过结果,再次手工确认程序识别出来的是否真的找不到,是否只是名字稍有差别。

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 deliveries
14 
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 代码:

 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,%%b
10   )
11 )

啊~~一下子心情就好了,又可以从繁杂的工作里逃出来晒太阳喝喝茶了。。。

分类:

技术点:

相关文章:

  • 2022-01-07
  • 2021-04-01
  • 2022-12-23
  • 2021-04-26
  • 2022-12-23
  • 2022-01-08
  • 2022-12-23
猜你喜欢
  • 2022-12-23
  • 2021-08-08
  • 2021-10-09
  • 2022-12-23
  • 2021-12-12
  • 2022-12-23
相关资源
相似解决方案