有没有办法让shutil.make_archive
排除某些子目录,或者有没有办法通过shutil
将目录附加到单个档案?
示例很有趣:
/root
/workingDir
/dir1
/dir2
/dirA
/dirB
/dir3
假设我想在workingDir
内创建一个存档,其中包含{em>除之外的所有内容dirA
- 我该怎么做?是否可以不编写循环遍历整个树的方法?
答案 0 :(得分:2)
我不认为直接用shutil可以做到这一点。可以使用tarfile(内部使用shutil)来实现它
Tarfile.add有一个过滤器参数,您可以精确地将其用于此目的。
另见答案:Python tarfile and excludes
EXCLUDE_FILES = ['dir2/dirA']
tar = tarfile.open("sample.tar.gz", "w:gz")
tar.add("workingDir", filter=lambda x: None if x.name in EXCLUDE_FILES else x)
tar.close()