如何避免shutil.make_archive生成归档时将自身包含在内?
解决shutil.make_archive打包时包含自身归档文件的问题
这个问题的核心原因很明确:你把生成的App-1.0.zip放在了当前工作目录(也就是你传给make_archive的第三个参数.)里,当归档工具遍历当前目录内容时,它会把自己正在创建的这个未完成的zip文件也打包进去,就出现了你看到的48字节的冗余文件。
这里有两个简单直接的解决办法:
方法一:把归档文件输出到当前目录之外
直接指定归档文件的路径到上级目录(或者其他不在当前归档范围内的路径),这样生成的zip就不会被包含进当前目录的遍历中:
import shutil # 把归档文件生成到Release的上级目录 shutil.make_archive('../App-1.0', 'zip', '.')
方法二:明确指定只打包App目录
利用make_archive的base_dir参数,只把App子目录作为归档内容,而不是整个当前目录。这样当前目录下的其他文件(包括即将生成的zip)都不会被纳入归档范围:
import shutil # root_dir指定根目录为当前目录,base_dir指定只打包App子目录 shutil.make_archive('App-1.0', 'zip', root_dir='.', base_dir='App')
用这种方法生成的zip,解压后正好就是你想要的App目录,完全符合预期。
内容的提问来源于stack exchange,提问作者Alex P.
相关产品推荐
相关产品推荐

