2016-08-10 1 views
3

shutil.make_archiveにはいくつかの子ディレクトリを除外する方法がありますか?shutilによってディレクトリを単一のアーカイブに追加する方法はありますか?いくつかのパスを除外してshutil.make_archive()を使用してアーカイブを作成

例は、楽しいです:

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

は私がdirAため以外のすべてを含まworkingDir内からアーカイブを作成したいと - どのように私はこれを行うことができますか?ツリー全体をループするメソッドを記述しなくても可能ですか?

答えて

1

私はこれをシャッターで直接行うことはできません。これは、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() 
関連する問題