Python 压缩单个文件
我正在尝试用python压缩单个文件。不管出于什么原因,我都很难理解语法。我试图做的是保留原始文件并创建原始文件的新压缩文件(就像Mac或Windows在存档文件时所做的那样) 以下是我到目前为止的情况:Python 压缩单个文件,python,zipfile,Python,Zipfile,我正在尝试用python压缩单个文件。不管出于什么原因,我都很难理解语法。我试图做的是保留原始文件并创建原始文件的新压缩文件(就像Mac或Windows在存档文件时所做的那样) 以下是我到目前为止的情况: import zipfile myfilepath = '/tmp/%s' % self.file_name myzippath = myfilepath.replace('.xml', '.zip') zipfile.ZipFile(myzippath, 'w').write(open(
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.close()
from zipfile import ZipFile
zipf = ZipFile("main.zip","w", zipfile.ZIP_DEFLATED)
zipf.write("main.json")
zipf.close()
压缩文件的正确方法是:
zipfile.ZipFile('hello.zip', mode='w').write("hello.csv")
# assume your xxx.py under the same dir with hello.csv
官方文件:
ZipFile.write(文件名,arcname=None,compress\u type=None)
将名为filename的文件写入归档文件,并将其命名为arcname
将
open(filename).read()
传递到write()
open(filename).read()
是一个字符串,它包含文件的全部内容filename
,它将抛出FileNotFoundError
,因为它试图找到一个以字符串内容命名的文件。因为您还想指定目录,请尝试使用os.chdir
:
#!/usr/bin/python
from zipfile import ZipFile
import os
os.chdir('/path/of/target/and/destination')
ZipFile('archive.zip', 'w').write('original_file.txt')
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)
你有什么错误?将现有文件的名称作为第一个参数,则传递文件的内容作为文件名。您可能希望传递源文件的名称(以及
arcname=
),或者正在查找。ZipFile.write(filename,arcname=None,compress_type=None)
将名为filename的文件写入存档,并将存档名称命名为arcname,以便“正确”压缩文件,您可能需要添加compress\u type=zipfile.ZIP\u DEFLATED
,因为zipfile默认压缩是ZIP\u STORED
,它不会减少压缩文件的大小。compress\u type
的有效值是zipfile.ZIP\u STORED
(未压缩),zipfile.ZIP\u DEFLATED
(标准ZIP),和zipfile.ZIP_BZIP2
和zipfile.ZIP_LZMA
,这些都是不言自明的。