Учитывая каталог на пути a:\\b\\c\\d\\e
, я хочу, чтобы создать ZipFile в Python 3.5 и более поздней, который выглядит следующим образом:Включить структуру каталогов в виде архива на основе фиксированного относительного пути
file.zip # want this
+d
+-...files from d\
+-e
+-...files from e\
Я попытался это пешком целевой путь, используя os
и zipfile
:
start_path = "a:\\b\\c\\d"
for root, dirs, files in os.walk(start_path):
for file in files:
ziph.write(os.path.relpath(os.path.join(root, file)))
в связи с relpath
и работать реж быть в b
, код будет создать почтовый файл следующим образом:
file.zip # do not want this
+c
+-...files from c\
+-d
+-...files from d\
+-e
+-...files from e\
Мой вопрос: Как я могу заставить zipwriter создать структуру каталогов, как показано в начале, начиная с режем d
в то время как я знаю, что полный путь только во время выполнения.
Спасибо! Кажется, я упустил этот параметр 'arcname'. Могу ли я сделать раздельный разделитель пути независимым? –
Да, вы получаете разделитель с 'os.sep' (https://docs.python.org/3/library/os.html#os.sep) – lucasnadalutti
Спасибо, это помогает мне! –