将 shutil.make_archive 与 zipfile.ZIP_STORED 一起使用?
Posted
技术标签:
【中文标题】将 shutil.make_archive 与 zipfile.ZIP_STORED 一起使用?【英文标题】:Use shutil.make_archive with zipfile.ZIP_STORED? 【发布时间】:2013-04-01 19:36:14 【问题描述】:在 Python 中,有没有办法使用 shutil.make_archive()
函数并将文件压缩设置为 zipfile.ZIP_STORED
? (即未压缩)
文档显示有很多可选参数,但都没有设置文件压缩:
shutil.make_archive(base_name, format[, root_dir[, base_dir[, verbose[, dry_run[, owner[, group[, logger]]]]]]])
【问题讨论】:
【参考方案1】:不,shutil.make_archive
无法做到这一点。
如果the docs 中缺少相关标志不足以证明,您可以查看the source。
特别是在line 683,如果您的Python 有zipfile
模块,您可以看到它显式传递compression=zipfile.ZIP_DEFLATED
,而line 634 的后备代码除了-r
和@ 之外不传递任何参数987654329@ 到zip
命令行工具。
这是一个高级函数,使琐碎的情况更容易;如果你想做任何事情zip
/tar
/gztar
/bztar
-specific,你可以而且应该使用底层库。
当然,如果你经常需要这个,你可以编写自己的make_archive
-like wrapper(只需将相关代码从shutil
中复制出来并修改你的副本即可)。
【讨论】:
@twasbrillig:感谢更新编辑!看起来有几个行号在 3.3 和 3.4 之间发生了变化,或者我一开始就弄错了,所以我不得不将其中两个移动到几行。以上是关于将 shutil.make_archive 与 zipfile.ZIP_STORED 一起使用?的主要内容,如果未能解决你的问题,请参考以下文章
shutil make_archive导致嵌套的.zip文件[重复]