我正在尝试从 FTP 站点解压缩文件。我已经尝试在子进程中使用 7z 以及在旧的 os.system 格式中使用 7z。然而,当我在 python 中使用 zipfile 模块时,我最接近,所以我决定坚持使用它。无论我如何编辑它,我似乎都会遇到两个错误之一,所以这里有两个错误,所以你们都可以看到我的头撞到墙上的位置:
z = zipfile.ZipFile(r"\\svr-dc\ftp site\%s\daily\data1.zip" % item)
z.extractall()
NotImplementedError: compression type 6 (implode) (我认为这是完全错误的,但我想我会包括在内。)
我似乎最接近以下内容:
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...'
这个问题是它实际上给了我 zip 中的第一个文件名。我可以在错误末尾看到文件 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 是正确的,但如果我在其中添加任何其他内容,我的论点就会太多。