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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.