我不知道如何使用shutil.make_archive将文件夹压缩为 zip 文件,然后将该saved_20170721.zip文件放入名为的文件夹中past_data
我有代码:
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)
Run Code Online (Sandbox Code Playgroud)
我的目标是'c:\past_data'看起来像:
past_data---+ saved_20170721.zip
+ saved_20170722.zip
+ saved_20170723.zip
+ saved_20170724.zip
Run Code Online (Sandbox Code Playgroud)
但我无法理解文档,并且不断得到奇怪的结果。
sea*_*han 11
我遇到了同样的问题,发现 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')
Run Code Online (Sandbox Code Playgroud)
希望它有帮助..我在这里也有一篇关于它的博客文章