繁体   English   中英

Python为一个文件夹中的所有文件夹创建多个zip文件

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM