zipfile.write() :文件的相对路径,在 zip 存档中复制

新手上路,请多包涵

使用 zip 文件,我指示文件位于其他文件夹中,例如: './data/2003-2007/metropolis/Matrix_0_1_0.csv'

我的问题是,当我提取它时,文件位于 ./data/2003-2007/metropolis/Matrix_0_1_0.csv 中,而我希望它被提取到 ./

这是我的代码:

 def zip_files(src, dst):
    zip_ = zipfile.ZipFile(dst, 'w')

    print src, dst

    for src_ in src:
        zip_.write(src_, os.path.relpath(src_, './'), compress_type = zipfile.ZIP_DEFLATED)

    zip_.close()

这是 src 和 dst 的打印:

     ['./data/2003-2007/metropolis/Matrix_0_1_0.csv', './data/2003-2007/metropolis/Matrix_0_1_1.csv'] ./data/2003-2007/metropolis/csv.zip

原文由 Touki 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 706
1 个回答

如图: Python: Getting files into an archive without the directory?

解决办法是:

      '''
    zip_file:
        @src: Iterable object containing one or more element
        @dst: filename (path/filename if needed)
        @arcname: Iterable object containing the names we want to give to the elements in the archive (has to correspond to src)
'''
def zip_files(src, dst, arcname=None):
    zip_ = zipfile.ZipFile(dst, 'w')

    print src, dst
    for i in range(len(src)):
        if arcname is None:
            zip_.write(src[i], os.path.basename(src[i]), compress_type = zipfile.ZIP_DEFLATED)
        else:
            zip_.write(src[i], arcname[i], compress_type = zipfile.ZIP_DEFLATED)

    zip_.close()

原文由 Touki 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题