Update split logic
This commit is contained in:
@@ -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)
|
||||
Reference in New Issue
Block a user