在Python中,有没有一种方法可以使用shutil.make_archive()函数并将文件压缩设置为zipfile.ZIP_STORED? (即未压缩)

该文档显示,有许多可选参数,但是它们都不设置文件压缩:

shutil.make_archive(base_name, format[, root_dir[, base_dir[, verbose[, dry_run[, owner[, group[, logger]]]]]]])

最佳答案

不,shutil.make_archive无法执行此操作。

如果the docs中缺少相关标志不足以作为证据,则可以查看the source

特别是,在line 683处,如果您的Python具有compression=zipfile.ZIP_DEFLATED模块,则可以看到它显式地传递了zipfile,而line 634处的后备代码没有将-r-q之外的任何参数传递给zip命令行工具。

这是一个高级功能,可以简化琐碎的案件。如果要执行zip / tar / gztar / bztar特定的任何操作,则可以并且应该使用基础库。

当然,如果您经常需要此代码,则可以编写自己的类似make_archive的包装器(只需将相关代码从shutil中复制并修改副本)。

10-05 20:32
查看更多