2016-08-10 1 views
3

shutil.make_archive에 하위 디렉토리를 제외 시키거나 또는 shutil을 통해 단일 보관 파일에 디렉토리를 추가 할 수있는 방법이 있습니까?어떤 경로를 제외하고 shutil.make_archive()를 사용하여 보관함 만들기

예는 재미 :

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

내가 dirA에 대한 제외한 모든 을 포함 workingDir 내에서 아카이브 만들고 싶었한다고 가정 - 나는이 작업을 수행 할 수있는 방법을? 전체 트리를 순환하는 메소드를 작성하지 않고도 가능합니까?

답변

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() 
:

또한이 답변을 참조하십시오