【问题标题】:Creating archive with shutil.make_archive() while excluding some path(s)使用 shutil.make_archive() 创建存档,同时排除某些路径
【发布时间】:2016-12-17 10:32:22
【问题描述】:

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

例子很有趣

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

假设我想从workingDir 中创建一个存档,其中包含dirA 的所有内容除了——我该怎么做?是否可以不编写循环遍历整个树的方法?

【问题讨论】:

    标签: python python-2.7 archive shutil


    【解决方案1】:

    我认为直接使用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()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-08-30
      • 2017-11-09
      • 1970-01-01
      • 2015-03-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-07
      相关资源
      最近更新 更多