我似乎无法绕过这个。
我创建了一个像这样的zipfile:
archive_name = 'data.zip'
with zipfile.ZipFile(archive_name, 'w') as archive:
info = zipfile.ZipInfo('file_a.txt')
info.date_time = now
info.compress_type = zipfile.ZIP_DEFLATED
archive.writestr(info, file_a)
这给了我data.zip
当我在我的Mac上解压缩时,我得到了
/{archive_name}
/{archive_name}/{files}
或在我的情况下
/data
/data/file_a.txt
如果我在我的Mac上重新压缩此存档,可能会发生两件事:
•如果我选择文件夹的内容,并右键点击“存档”。它们,它创建了一个档案' Archive.zip'它没有目录前缀,只有文件。这与我的python生成的归档完全兼容。
•如果我选择了该文件夹,并右键点击“存档”'那个,我的所有文件都以该目录为前缀。这与我的python生成的归档不兼容,因为文件看起来像/data/file_a.txt
,而不是file_a.txt
我的应用程序创建并读取zip文件。无论给出什么方向/说明,用户都希望以两种方式压缩内容。
有没有人有一个很好的策略来支持用户可以压缩文件的两种方法,同时使用最少量的代码?
我很快就上了一堂课来处理我所需的大部分操作。 https://gist.github.com/jvanasco/9770118
filenames = ZipfileNamedList(zipped.namelist()) filename_in_archive = filenames_2.has_file(' file_a.txt')
这不太理想,但我想不出更好的方法。