【发布时间】:2017-07-02 01:08:45
【问题描述】:
我正在尝试在 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
【问题讨论】:
-
你得到什么错误?
-
zipfile.write()将现有文件的名称作为第一个参数,您将文件的内容作为文件名传递。您要么想要传递源文件的名称(连同arcname=),要么正在寻找writestr()。 -
ZipFile.write(filename, arcname=None, compress_type=None)将名为 filename 的文件写入存档,并为其赋予存档名称 arcname -
为了“正确”压缩文件,您可能需要添加
compress_type=zipfile.ZIP_DEFLATED,因为压缩文件默认压缩为ZIP_STORED,这不会减少压缩文件的大小。