Python:如何使用shutil.make_archive?

标签 python zip shutil

我不知道如何使用 shutil.make_archive 将文件夹压缩到 zip 文件中,然后将该 saved_20170721.zip 文件放入名为的文件夹中过去的数据

我有代码:

from shutil   import make_archive
from datetime import datetime

folderpath_to_zip_up = 'c:\my_work\todays_data'                    # I wanna zip up this folder
folderpath_archive   = 'c:\past_data'                              # And put it into here as file
filename             = 'saved_{:%Y-%m-%d}'.format(datetime.now())    

make_archive(filename, 'zip', folderpath_archive, folderpath_to_zip_up)

我的目标是 'c:\past_data' 看起来像:

past_data---+ saved_20170721.zip
            + saved_20170722.zip
            + saved_20170723.zip
            + saved_20170724.zip

但我无法理解 documentation我不断得到奇怪的结果。

最佳答案

我遇到了同样的问题,发现 Shutil.make_archive 的文档非常密集且违反直觉。

我最终得到了它,并编写了一个函数来帮助我,因为我永远无法第一次就把它做好。

import os, shutil
def make_archive(source, destination):
        base = os.path.basename(destination)
        name = base.split('.')[0]
        format = base.split('.')[1]
        archive_from = os.path.dirname(source)
        archive_to = os.path.basename(source.strip(os.sep))
        shutil.make_archive(name, format, archive_from, archive_to)
        shutil.move('%s.%s'%(name,format), destination)

make_archive('/path/to/folder', '/path/to/folder.zip')

希望它有帮助..我这里也有一篇关于它的博客文章

http://www.seanbehan.com/how-to-use-python-shutil-make_archive-to-zip-up-a-directory-recursively-including-the-root-folder/

关于Python:如何使用shutil.make_archive?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45245079/

相关文章:

python - shutil.rmtree() 说明

python - SqlAlchemy:将继承类型从一种转换为另一种

python - 新项目 : Python 2 or Python 3?

python - Pandas - 对具有相同名称开头的列求和

Python 用正则表达式解析数据变成字典。

python - Shutil.copyfile 不应该用 follow_symlinks 设置替换 dst 中的链接吗?

用os模块覆盖python文件

php - 从 zip 存档中创建和提取文件

java - 是否可以保存从http读取的zip文件并直接将其保存到Databse中,而无需在java中物理创建它

python - 在 python 中从 cURL GET 请求保存 .zip 文件