[英]Python to create multiple zip files for all in a folder
文件夹中的许多文件。 我想将它们全部拉上拉链。 每10个文件将被添加到一个zip文件中。
import os, glob
import numpy as np
import zipfile
file_folder = "C:\\ABC\\DEF\\"
all_files = glob.glob(file_folder + "/*.*")
several_lists= np.array_split(all_files, 10)
for num, file_names in enumerate(several_lists):
ZipFile = zipfile.ZipFile(file_folder + str(num) + ".zip", "w" )
for f in file_names:
ZipFile.write(f, compress_type=zipfile.ZIP_DEFLATED)
ZipFile.close()
生成的zip文件还包含路径,即每个zip文件在ABC文件夹中都有一个文件夹DEF。 文件本身位于DEF中。
我将行更改为:
ZipFile.write(os.path.basename(f), compress_type=zipfile.ZIP_DEFLATED)
错误弹出:
WindowsError: [Error 2] The system cannot find the file specified:
如何纠正? 谢谢。
顺便说一句,Python创建的zip和rar文件有很大的不同吗?
ZipFile.write
有一个参数arcname
,它允许显式提供一个归档文件名(默认情况下与磁盘上的路径相同)。
因此,只需使用zip.write(f, arcname=os.path.basename(f))
。
另外,为简单起见,您可以在zipfile.ZipFile
上设置压缩模式。
编辑:您可以将zipfile用作上下文管理器,以提高可靠性和减少行数,并假设Python 3.6 f字符串不错:
with zipfile.ZipFile(f'{file_folder}{num}.zip', 'w', compression=zipfile.ZIP_DEFLATED) as zip:
for f in file_names:
zip.write(f, arcname=os.path.basename(f))
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.