我在使用Python中的zipfile构建的压缩文件时遇到问题。我遍历目录中的所有文件并将它们写入存档。当我试图提取它们后,我得到一个与路径分隔符相关的异常。无法解压使用zipfile构建的压缩文件(Python)
the_path= "C:\\path\\to\\folder"
zipped= cStringIO.StringIO()
zf = zipfile.ZipFile(zipped_cache, "w", zipfile.ZIP_DEFLATED)
for dirname, subdirs, files in os.walk(the_path) :
for filename in files:
zf.write(os.path.join(dirname, filename), os.path.join(dirname[1+len(the_path):], filename))
zf.extractall("C:\\destination\\path")
zf.close()
zipped_cache.close()
这里的例外:
zipfile.BadZipfile:在 目录 “ENV \指数” 和头 “ENV /索引” 文件名不同。
更新:我更换了字符串缓冲区cStringIO.StringIO()
有一个临时文件(tempfile.mkstemp("temp.zip")
),现在它的工作原理。当zipfile模块写入缓冲区破坏归档文件时会发生这种情况,但不确定问题是什么。
问题是我正在从/中读取/写入以“r”/“w”模式而不是“rb”/“wb”打开的文件中的信息。这在Linux中不是问题,但由于字符编码的原因,它在Windows中出现错误。解决了。
发布例外,傻! – dkamins 2011-05-19 19:33:39
我只给出了这些例子,路径正确地形成,并带有反斜杠('C:\\ path \\到\\ folder')。但答复都没有回答这个问题。例外是“zipfile.BadZipfile:目录中的文件名”env \ index“和标题”env/index“不同。” – Cat 2011-05-19 19:46:00
+1支持反对随机,无法解释的downvotes。 – jedwards 2011-05-19 19:47:48