如何创建 zip?

How can I create a zip?

如何添加文件和压缩文件夹?

到目前为止,我可以使用 zipfile 创建一个 zip。

How can I create a folder to add files and zip the folder?

您可以按照以下步骤做您想做的事:

要创建文件夹,请像这样使用 os.mkdir

import os
os.mkdir('spam') # your folder name

然后您可以向其中写入文件或使用shutil.copy复制现有文件。

# to write files:
with open('./spam/eggs.txt', 'w') as fp: # creates a text file in spam named eggs.txt
    fp.write('hello') # write hello

# to copy files
import shutil
shutil.copy('eggs.txt', './spam/eggs.txt') # copy eggs.txt from the current working dir to spam folder

然后压缩文件夹,您的想法是正确的,可以这样使用 zipfile

from zipfile import ZipFile, ZIP_DEFLATED

zipfp = ZipFile('spam.zip', 'w', ZIP_DEFLATED) # create a new zip file named spam.zip

for root, dirname, files in os.walk('./spam'): # walk in the spam folder
    [zipfp.write(os.path.join('./spam',file)) for file in files] # write them to the zip file
zipfp.close()

一个完整的例子:

import os
from zipfile import ZipFile, ZIP_DEFLATED
os.mkdir('spam')
with open('./spam/eggs.txt', 'w') as fp: 
    fp.write('hello')
with ZipFile('spam.zip', 'w', ZIP_DEFLATED) as zipfp:
    for root, dirname, files in os.walk('./spam'): 
        [zipfp.write(os.path.join('./spam',file)) for file in files] 

此代码的结果是生成一个名为 spam.zip 的压缩文件夹,在 zip 文件中,有一个名为 eggs.txt 的 txt 文件,其中包含文本 'hello'

为 OP 澄清:

[zipfp.write(os.path.join('./spam',file)) for file in files]

相当于:

for file in files:
     zipfp.write(os.path.join('./spam',file))

使用列表理解.

写起来更简单