diff --git a/split_by_size_or_qty_and_compress.py b/split_by_size_or_qty_and_compress.py index bd73a07..6bb7fe2 100644 --- a/split_by_size_or_qty_and_compress.py +++ b/split_by_size_or_qty_and_compress.py @@ -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) \ No newline at end of file +split_by_size_or_qty_and_compress(files_list, SIZE_LIMIT, QUANTITY_LIMIT) \ No newline at end of file