有没有办法让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()

关于python - 使用shutil.make_archive()创建文件,同时排除一些路径,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38883595/

10-11 15:22