给定路径a:\\b\\c\\d\\e
的目录,我想在python 3.5+中创建一个如下所示的zipfile:
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
,代码将创建一个zip文件,如下所示:
file.zip # do not want this
+c
+-...files from c\
+-d
+-...files from d\
+-e
+-...files from e\
我的问题是:我如何强制zipwriter创建一个目录结构,如开头所示,从dir d
开始,而我只知道运行时的完整路径。
答案 0 :(得分:1)
ZipFile.write
接受second parameter,这是您希望它位于zip
内的目录。所以你可以有类似的东西:
start_path = "a:\\b\\c\\d"
import os
zip_start_path = start_path.split(os.sep)[-1]