如何使用 Python zipfile 将文件放入 zip 存档中

Posted

技术标签:

【中文标题】如何使用 Python zipfile 将文件放入 zip 存档中【英文标题】:How to put files in a zip archive using Python zipfile 【发布时间】:2016-06-02 16:50:15 【问题描述】:

我编写了一个 python(3.5) 脚本,它在 zip 存档中创建我的文件的备份,它运行良好。我使用 Windows 并为此项目安装了来自 GnuWin32 的 zip 命令。但我想改用 Python 的 Zipfile 库。如何修改我的代码?

import os
import time
import sys

source = 'C:\\ExampleFile'

target_directory ='D:\\BACKUP'

confirm = input("Are you sure you want to run backup? (y/n): ")

if confirm == "y":
    if not os.path.exists(target_directory):
        os.mkdir(target_directory)

    Folder = target_directory + os.sep + time.strftime('%d-%m-%Y')
    Subfolder = time.strftime('%H-%M')

    comment = input('Enter a backup comment (optional):  ')

    if len(comment) == 0:
        target = Folder + os.sep + Subfolder + '.zip'
    else:
        target = Folder + os.sep + Subfolder + '_' + comment.replace(' ', '_') + '.zip'
    if not os.path.exists(today):
        os.mkdir(Folder)
        print('Successfully created directory', Folder)

    zip_command = "zip -r 0 1".format(target,''.join(source))

    print("Running:")
    if os.system(zip_command) == 0:
        print('\nSuccessful backup to', target)
    else:
        print('\nBackup FAILED')

elif confirm == "n":
    sys.exit()
else:
    print("Use only 'y' or 'n'")

【问题讨论】:

【参考方案1】:

这可能是一个好的开始:

#!/usr/bin/python
import zipfile, os

def zipdir(path, fname="test.zip"):
    zipf = zipfile.ZipFile(fname, 'w', zipfile.ZIP_DEFLATED)
    for root, dirs, files in os.walk(path):
        for file in files:
            zipf.write(os.path.join(root, file))
    zipf.close()

【讨论】:

我建议使用上下文管理器(with statement)。【参考方案2】:

更改zip_command = "zip -r 0 1".format(target,''.join(source)) 到python zip文件。类似zip_command = "zip.py -r 0 1".format(target,''.join(source))

【讨论】:

以上是关于如何使用 Python zipfile 将文件放入 zip 存档中的主要内容,如果未能解决你的问题,请参考以下文章

如何检查 zip 文件是不是使用 python 的标准库 zipfile 加密?

使用 python zipfile 将文件添加到 jar

使用 python zipfile 归档符号链接

如何在 Python 中使用 zipfile 模块列出文件夹的文件

如何使用 Python 的 zipfile 模块对 ZIP 文件中的文件设置权限(属性)?

如何使用 zipfile python 压缩文件夹