根据固定的相对路径在zip文件中包含目录结构

时间:2016-12-09 13:35:57

标签: python python-3.x directory zipfile

给定路径a:\\b\\c\\d\\e的目录,我想在python 3.5+中创建一个如下所示的zipfile:

file.zip # want this
 +d
  +-...files from d\
  +-e
    +-...files from e\

我是通过使用oszipfile走这样的目标路径来尝试这个:

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开始,而我只知道运行时的完整路径。

1 个答案:

答案 0 :(得分:1)

ZipFile.write接受second parameter,这是您希望它位于zip内的目录。所以你可以有类似的东西:

start_path = "a:\\b\\c\\d"
import os
zip_start_path = start_path.split(os.sep)[-1]