python – 使用shutil.make_archive()创建存档,同时排除某些路径

有没有办法让shutil.make_archive排除某些子目录,或者有没有办法通过shutil将目录附加到单个存档?

例子很有趣:

/root
  /workingDir
      /dir1
      /dir2
          /dirA
          /dirB
      /dir3   

假设我想在workingDir中创建一个包含除dirA之外的所有内容的存档 – 我怎么能这样做?是否可以不编写循环遍历整个树的方法?

最佳答案 我不认为直接用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()
点赞