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

时间:2019-05-10 07:32:58

标签: python list zip

文件夹中的许多文件。我想将它们全部拉上拉链。每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文件有很大的不同吗?

1 个答案:

答案 0 :(得分:2)

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))