我有一個文件,並假設我需要將它分割成N個較小的文件,最小的塊應該至少有X個字節,並且所有文件都應該有(幾乎)相同的尺寸:分割文件不超過N塊但長度最小
因此,使用例如字符串 'ABCDEFGHIJ' 與N = 4和X = 3將返回[ 'ABCD', 'EFG', 'HIJ']因爲:
3 chunks < 4 chunks
4 chars > 3 chars
我寫了一個分割功能,但是它有時會產生一個額外的串所以我可能應該通過x
的值而不是在那裏計算。
def split(string, n):
x = len(string)//n
return [string[i:i+x] for i in range(0, len(string), x)]
真正的問題是如何計算用最少的字節數來剪切文件的塊數。
def calculate(length, max_n, min_x):
n, x = ...
return n, x
是否有一個簡單的已知算法來做這種動作?
實際上:這些文件不需要在1個字節上有所不同,因爲我想最大限度地增加塊的數量。
您使用的'N'是不相符的。是字符數還是文件數? –
@gnibbler N是文件(塊)的數量。 X是字節數(字符) – user1661233
但標題說N是字符數 –