def FilesToZip(fps, zip_fp, delete=False):
''' 多文件打包成zip
:param fps: [r'C:\1.txt', r'C:\2.txt', r'C:\3.txt'] 文件全路径的list
:param zip_fp: r'C:\files.zip'
:param delete: True 删除原文件
:return:
'''
if len(fps)==0: raise Exception('参数 fps 不能为空')
if not zip_fp.endswith("zip"): raise Exception('输出zip路径 文件格式不对')
zipf = zipfile.ZipFile(zip_fp, "w") #在路径中创建一个zip对象
for fp in fps:
fn = os.path.basename(fp)
zipf.write(fp, fn) #第一个参数为该文件的全路径;第二个参数为文件在zip中的相对路径
zipf.close() #关闭文件
if delete: #删除原文件
for fp in fps:
os.remove(fp)
print('%s ===> ok'%zip_fp)
if __name__ == '__main__':
sourcePath = 'D:\\park4nightData\\allImgs\\'
outPutPath = 'D:\\park4nightData\\allImgsZip\\'
# for root, dirs, files in os.walk(sourcePath):
# sourcePathFiles = files
sourcePathFiles = list(os.walk(sourcePath))[0][2]
sourcePathFiles = [sourcePath+path for path in sourcePathFiles]
totalFiles = len(sourcePathFiles)
zip_num = 1
while True:
print('zip_num:',zip_num)
zip_file_name = 'imgs-%s.zip'%zip_num # 压缩后的zip文件名
zip_file_path = outPutPath + zip_file_name
files_path_list = sourcePathFiles[:5000] # 一次打包5000个图片
sourcePathFiles = sourcePathFiles[5000:]
if len(files_path_list) > 0:
FilesToZip(files_path_list, zip_file_path)
print('>>>>>>>>>>>> %s / %s' % (len(sourcePathFiles), totalFiles))
zip_num += 1
else:
break
python 压缩文件 zip
最新推荐文章于 2024-07-02 17:23:19 发布