我试图从FTP站点解压文件。我已经在一个子进程中使用7z以及在较旧的os.system格式中使用7z。但是,当我在Python中使用zipfile模块时,我得到了最接近的结果,所以我决定坚持这一点。无论我如何修改这个我似乎得到两个错误,所以这里的一个是他们两个这样你们能看到我敲我的头撞在墙上:在Python中通过ftp解压缩zip的问题
z = zipfile.ZipFile(r"\\svr-dc\ftp site\%s\daily\data1.zip" % item)
z.extractall()
NotImplementedError:压缩型6(爆) (我觉得这个是完全错误的,但想我会包括)
我似乎得到最接近的有以下:
z = zipfile.ZipFile(r"\\svr-dc\ftp site\%s\daily\data1.zip" % item)
z.extractall(r"\\svr-dc\ftp site\%s\daily\data1.zip" % item)
IOError: [Errno 2] No such file or directory: '\\\\svr-dc...'
与此美中不足的是,它实际上是给我拉链中的第一个文件名。我可以在错误结束时看到文件AJ07242013.PRN,因此我感觉更接近,因为它至少可以读取zip文件的内容。
几乎任何迭代,我尝试让我这两个错误之一,或语法错误,但这很容易解决,而不是我的主要关切。
对不起,这么长时间啰嗦。我很乐意让这个工作,所以让我知道你认为我需要做什么。
编辑:
所以7Z终于被添加到路径并没有与两个子以及使用os.system任何错误运行通过。不过,我仍然无法解开任何东西。在我看来,从我读过的所有python文档中,我应该使用subprocess.communicate()模块来提取此文件,但它不会解压缩。当我使用os.system时,它一直告诉我它找不到档案。
import subprocess
cmd = ['7z', 'e']
sp = subprocess.Popen(cmd, stderr=subprocess.STDOUT, stdout=subprocess.PIPE)
sp.communicate('r"\C:\Users\boster\Desktop\Data1.zip"')
我不认为sp.communicate是正确的,但如果我添加任何东西到它,我有太多的争论。
所以看来我得到一个“无法找到文件预期”的错误从子进程导入。在它失败之前,我没有经过这段代码的第三行。 'import subprocess cmd = ['7z','e','Test.7z','Test','-mx9'] sp = subprocess.Popen(cmd,stderr = subprocess.STDOUT,stdout = subprocess.PIPE )“这似乎是在第三行失败,甚至没有进入功能。思考? – Benjooster
而且我知道实际的'7z e'是可以工作的,因为它会在python之外的命令行中解压缩项目。 – Benjooster
它应该工作......如果这是任何安慰!它是一个以“系统找不到预期的文件”结尾的python异常堆栈?这意味着它无法找到7z。它是否安装正确?在你运行常规脚本的同一个地方,比如'subprocess.call(['7z'])'(它应该打印7z帮助)和'os.isfile('Test.7z ')'(它应该是真的)。最后你不需要-mx9,但我认为这几乎是无害的。 – tdelaney