Python 遍历ZIP文件
我正试图编写一个小助手应用程序来查找备份服务器上的PDF。我在当地的一家零售连锁店工作,做我们文书工作的员工偶尔需要从我们商店收到的报告副本。我经常觉得它值得一个程序化的答案,所以我今天早些时候就开始了这方面的工作,很快就遇到了困难 我对zipfile.zipfile知之甚少,但我所学的还不足以做我需要做的事情。在我的备份服务器中,我有一组名为Python 遍历ZIP文件,python,python-3.x,zipfile,Python,Python 3.x,Zipfile,我正试图编写一个小助手应用程序来查找备份服务器上的PDF。我在当地的一家零售连锁店工作,做我们文书工作的员工偶尔需要从我们商店收到的报告副本。我经常觉得它值得一个程序化的答案,所以我今天早些时候就开始了这方面的工作,很快就遇到了困难 我对zipfile.zipfile知之甚少,但我所学的还不足以做我需要做的事情。在我的备份服务器中,我有一组名为comsmmdyy.zip的归档文件(每天接收一个),其中MMDDYY是我们处理文件的日期,通常是每周的周一到周五)。在每个档案中,我都有当天从每个商店收
comsmmdyy.zip
的归档文件(每天接收一个),其中MMDDYY
是我们处理文件的日期,通常是每周的周一到周五)。在每个档案中,我都有当天从每个商店收到的文件集,名为SSSSMMDD.ZIP
(SS
是商店编号,MMDD
是这些报告所代表的文书工作日期)
很可能在coms010814.zip
内,我将拥有0000106.zip
——日期不相关,因为每个商店都在处理前一天的文书工作,我们要到第二天才能收到他们发送的数据
我可以管理穿越那些zip档案。我构建了一个listcomp,它为我要查找的当天和之后的10天构建了一个datetime.date
对象,然后检查每个ComsMDDYY.zip
存档,查看它是否包含我请求的com
文件,然后我提取它
问题是,当我提取要查找的com
文件时,它会提取到\\PATH\to\ARCHIVE\PATH\to\ARCHIVE\file.zip。它似乎将其目录结构保留在zip文件中,并在解压时重新创建它
我觉得我在这里陷入了XY问题,但在我通过这一部分之前,我无法进入下一步
,为清晰起见(我希望如此)。我的最终目标是这样做:
OUT: Paperwork date (mm/dd/yyyy):
IN: 12/26/2013
OUT: Store Number:
IN: 1
OUT: Which report would you like to print
OUT: 1. report name
OUT: 2. report name
OUT: ...
OUT: n. report name
IN: 2
OUT > Printer the relevant PDF
我又花了一个多小时研究这个问题,结果一无所获。回到我的问题,我检查了“相关”菜单,看到它似乎完美地解决了我想做的事情
对于任何其他遇到此问题的人,请不要写:
file = [file for file in zipfilelist.namelist() if file.split('/')[-1] == target]
if file:
return file
而所有其他的gobbledeegook,我却做了:
file = [file for file in zipfilelist.namelist() if file.split('/')[-1] == target]
if file:
tmp = archive.read(file[0])
with NamedTemporaryFile(delete=False) as f:
f.write(tmp)
return f.name
请注意,我必须使用上下文管理器进行迭代才能做到这一点,因为我很早就退出了循环(因此无法关闭其余的文件),但无论如何,我的目标是在某个时候重构它。现在我在a中有了所需的文件,将名称传递回我的main()
循环,并可以在那里对其进行操作。当我完成后,我可以os.remove(file)
,一切都很好