基于固定相对路径在 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\
我通过使用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
开始,而我只在运行时知道完整路径。
【问题讨论】:
【参考方案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中包含文件全部解压