shutil.make_archive没有压缩到正确的目的地

时间:2017-10-14 06:10:40

标签: python-3.x zip shutil

根据下面的代码,我遇到了使用python 3 shutil.make_archive函数压缩目录的问题。 .testdir将被压缩,但它被压缩在/ home / pi中,而不是/ home / pi / Backups。

zip_loc = '/home/pi/.testdir'
zip_dest = '/home/pi/Backups/'
shutil.make_archive(zip_loc, 'zip', zip_dest)

有人能解释我做错了吗?

2 个答案:

答案 0 :(得分:3)

阅读文档here我想出了:

zip_loc = '/home/pi/.testdir'
zip_dest = '/home/pi/Backups/'
shutil.make_archive(base_dir=zip_loc, root_dir=zip_loc, format='zip', base_name=zip_dest)

来自文档:

  

base_name 是要创建的文件的名称,包括路径,减去任何特定于格式的扩展名。

  

root_dir 是一个目录,它将成为存档的根目录;例如,我们通常在创建存档之前进入 root_dir

  

base_dir 是我们开始存档的目录;即 base_dir 将是档案中所有文件和目录的公共前缀。

  

root_dir base_dir 都默认为当前目录。

答案 1 :(得分:0)

在写入存档之前,请移至好目录:

old_path = os.getcwd()
os.chdir(path)

->写档案文件

写完存档后,移回旧目录:

os.chdir(old_path)