首先,在創建的第一個分卷文件 test.z01的前面加上 \x50\x4b\x07\x08 這個是分卷壓縮的文件頭(header),占4個字節。其實單個壓縮文件本身 header 就有這個了,而分卷壓縮的需要兩個emmm。之後便是從單個大壓縮文件文件test.zip中讀取 "一個分卷大小 -4 個字節"的數據,寫入test.zip.001中,如何接著讀取一個分卷大小的數據,寫入test.zip.002,以此類推。
import os
import random
import sys
import zipfile
def zip_by_volume(file_path, block_size):
file_size = os.path.getsize(file_path)
path, file_name = os.path.split(file_path)
suffix = file_name.split('.')[-1]
zip_file = file_path + '.zip'
with zipfile.ZipFile(zip_file, 'w') as zf:
zf.write(file_path, arcname=file_name)
if file_size <= block_size:
return zip_file
else:
fp = open(zip_file, 'rb')
count = file_size // block_size