基于固定相对路径在 zip 文件中包含目录结构

Posted

技术标签:

【中文标题】基于固定相对路径在 zip 文件中包含目录结构【英文标题】:Include a directory structure in a zip file based on a fixed relative path 【发布时间】:2016-12-09 13:35:56 【问题描述】:

给定路径 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】:

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

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

【讨论】:

谢谢!我似乎忽略了arcname 参数。我可以让路径分割分隔符 os 独立吗? 是的,你得到了os.sep (docs.python.org/3/library/os.html#os.sep)的分隔符 谢谢,这对我有帮助!

以上是关于基于固定相对路径在 zip 文件中包含目录结构的主要内容,如果未能解决你的问题,请参考以下文章

Java -- 指定路径下的zip文件解压,其中的zip中包含文件全部解压

Java -- 指定路径下的zip文件解压,其中的zip中包含文件全部解压

jar清单中的绝对路径名与相对路径名

7-30 目录树

将zip内容提取到与zip文件同名的目录中,保留目录结构[关闭]

如何连接相对路径或生成嵌套文件夹中包含的唯一标识符 svg?