Update split logic

This commit is contained in:
2024-05-13 17:50:58 +02:00
parent cc00065569
commit b3dddcb684

View File

@@ -3,7 +3,7 @@ import os
import zipfile
###
BYTE_SIZE_LIMIT = 22144
SIZE_LIMIT = 18 # express in KiB
QUANTITY_LIMIT = 10
dir = os.listdir(os.getcwd())
@@ -24,18 +24,17 @@ def compress(file_names, zip_name):
zf.close()
def split_by_size_or_qty_and_compress(files, size_limit = 1000000000, qty_limit = 100000):
def split_by_size_or_qty_and_compress(files, size_limit = 1048576, qty_limit = 100000):
if not (isinstance(files, list)):
raise TypeError("Not a valid file list")
num_files = len(files)
chunk = []
part_num = 1
count = 0
chunk_size = 0
part_num = 1
size_limit = round(size_limit * 1024)
for file in files:
count += 1
while (files):
file = files.pop()
chunk_size += os.path.getsize(file)
if(chunk_size > size_limit) or (len(chunk) >= qty_limit):
@@ -43,11 +42,13 @@ def split_by_size_or_qty_and_compress(files, size_limit = 1000000000, qty_limit
chunk.clear()
chunk_size = 0
part_num +=1
continue
else:
chunk.append(file)
if(count == num_files):
compress(chunk, "Part_" + str(part_num) + ".zip")
continue
if(len(chunk) > 0):
compress(chunk, "Part_" + str(part_num) + ".zip")
split_by_size_or_qty_and_compress(files_list, BYTE_SIZE_LIMIT, QUANTITY_LIMIT)
split_by_size_or_qty_and_compress(files_list, SIZE_LIMIT, QUANTITY_LIMIT)