压缩单个文件

新手上路,请多包涵

我正在尝试在 python 中压缩单个文件。无论出于何种原因,我都很难理解语法。我想做的是保留原始文件并创建原始文件的新压缩文件(就像 Mac 或 Windows 在存档文件时所做的那样)。

这是我到目前为止所拥有的:

 import zipfile

myfilepath = '/tmp/%s' % self.file_name
myzippath = myfilepath.replace('.xml', '.zip')

zipfile.ZipFile(myzippath, 'w').write(open(myfilepath).read()) # does not zip the file properly

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

阅读 507
2 个回答

压缩文件的正确方法是:

 zipfile.ZipFile('hello.zip', mode='w').write("hello.csv")
# assume your xxx.py under the same dir with hello.csv

python官方文档

ZipFile.write(filename, arcname=None, compress_type=None)

将名为 filename 的文件写入存档,为其指定存档名称 arcname

您将 open(filename).read() 传递给 write()open(filename).read() 是包含文件 filename 全部内容的单个字符串,它会抛出 FileNotFoundError 因为它正在尝试查找以字符串内容命名的文件。

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

如果要压缩的文件 ( filename ) 位于名为 pathname 的不同目录中,则应使用 arcname 参数。否则,它将重新创建文件夹的完整文件夹层次结构。

 from zipfile import ZipFile
import os

with ZipFile(zip_file, 'w') as zipf:
    zipf.write(os.path.join(pathname,filename), arcname=filename)

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

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