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

MrD*_*Duk 8 python archive shutil python-2.7

有没有办法shutil.make_archive排除一些子目录,或者,有没有办法通过shutil?

例子很有趣

/root
  /workingDir
      /dir1
      /dir2
          /dirA
          /dirB
      /dir3   
Run Code Online (Sandbox Code Playgroud)

假设我想从其中创建一个档案,workingDir其中包括dirA-之外的所有内容,我该怎么做?是否可以不编写遍历整个树的方法?

use*_*269 5

我认为直接使用shutil是不可能的。可以使用 tarfile 来做到这一点(无论如何,shutil 在内部使用)

Tarfile.add有一个过滤器参数,您可以精确地用于此目的。

另请参阅此答案:Python tarfile 并排除

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()
Run Code Online (Sandbox Code Playgroud)