total_byte_len = 954
part_size_limit = 250
Result: #[star_byte, end_byte, bytes_in_part] with 0-based index
[[0, 250, 250], [251, 501, 250], [501, 751, 250], [751, 953, 202]]
我已經有一個功能,但它是非常粗糙和不可靠的(快速正髒),它是大約15線,所以我很想看看名單-comprehension /或lambda可以在這裏做=)創建字節範圍(請求部分數據非常有用)
如果你們堅持,這裏是我的版本: 請注意,我沒有時間給這個想那麼多,只是一些會盡快工作。 :)棄用通知!:< ==
def to_json(value):
return json.dumps(value)
def getByteRanges(total_byte_len, part_size_limit):
if total_byte_len%part_size_limit == 0: #devides evenly
left_over_part = 0
else:
left_over_part = 1
how_many_parts = roundup(((total_byte_len-(total_byte_len%part_size_limit))/part_size_limit)+left_over_part)
part_size = int(((total_byte_len-(total_byte_len%part_size_limit))/(how_many_parts-left_over_part))) #-1 to not include last part
parts = [x for x in range(how_many_parts)]
ranges = []
for i, obj in enumerate(parts):
start_range = (part_size*i)+1
end_range = part_size*(i+1)+1
if i == 0: #first part
start_range = 0
end_range = part_size
if i == len(parts)-1: #last part
end_range = total_byte_len-1
ranges.append([int(start_range), int(end_range), (int(end_range)-int(start_range))])
return ranges
不應該是250,499和500,749和750,953? – KillianDS 2012-02-11 11:20:03
您應該包含您的該功能的版本。 – 2012-02-11 11:22:09
@DanD。它太快 - 骯髒,我不應該。它只是得到冗餘等,並不會讓任何人受益(好吧,如果有一個很好的答案;) – ofko 2012-02-11 11:30:34