将文件夹内文件平均分配压缩成多个文件
代码功能:将文件夹内文件平均分配并压缩成多个文件,方便将文件夹内文件发给多人处理。
将SrcDir修改为待压缩文件夹路径,DstDir修改为压缩文件的输出路径,ZipFileNum是生成压缩文件的数量,文件名默认从1开始。
代码如下:
import os
import random
import zipfile
from tqdm import tqdm
SrcDir = r"G:\Temp\Temp5"
DstDir = r"G:\Temp\Temp4"
ZipFileNum = 13
names = []
for file in os.scandir(SrcDir):
if file.name[-1] == 'g':
names.append(file.name)
# 打乱顺序
random.shuffle(names)
FilesInZip = int(len(names) / ZipFileNum)
FileRemain = len(names) % ZipFileNum
for i in range(ZipFileNum):
z = zipfile.ZipFile(f"{DstDir}/{i + 1}.zip", 'w', zipfile.ZIP_DEFLATED)
if i < FileRemain:
PartOfNames = names[i * (FilesInZip + 1):(i + 1) * (FilesInZip + 1)]
else:
PartOfNames = names[FileRemain + FilesInZip * i:FileRemain + FilesInZip * (i + 1)]
print("--------------------------------------%d.zip-------------------------------- " % (i + 1))
print(PartOfNames)
for name in tqdm(PartOfNames):
z.write(SrcDir + "\\" + name, name)
# print(name)
z.close()
程序运行结果如下:
压缩文件大小不同是因为文件的压缩效率不同,压缩包内文件数量是相近的,个别压缩包内文件数量可能会相差1(看总文件数量能不能整除压缩文件数量)