2016-08-10 4 views
3

Есть ли способ иметь shutil.make_archive исключить некоторые дочерние каталоги, или, альтернативно, есть способ добавить каталоги в один архив через shutil?Создание архива с shutil.make_archive(), исключая некоторые пути

Примеры весело:

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

Предположим, что я хотел бы создать архив из в workingDir, который включал все кроме для dirA - как я могу это сделать? Возможно ли это, если вы не написали метод циклического перемещения по всему дереву?

ответ

1

Я не думаю, что это возможно с помощью непосредственно с помощью shutil. Это можно сделать с помощью tarfile (который в любом случае используется внутренним устройством)

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

 Смежные вопросы

  • Нет связанных вопросов^_^