[英]Concatenating last 2 strings in a for loop
我有以下代码:
for i in range(0, len(data), 4096):
data_group = data[i: i+4096]
if i == len(data) - 8193:
data_group_second_last = data_group
print(data_group_second_last)
if i==len(data) - 4097:
data_group += data_group_second_last
return data_group
我正在以 4096 字节的步长迭代一些数据。 我试图仅从 for 循环的最后 2 次迭代中连接数据字符串。 我上面的内容不起作用,因为len(data)
不会是 4096 的完美倍数,所以从长度中减去这个数字是行不通的。
注意:我需要使用循环来遍历数据,因为我正在解压缩(如果我寻求数据中的某个位置,则无法解压缩)。
您无需迭代即可找到最后两个块。 做一些数学运算:
def last_two(data):
full_chunks, remainder = divmod(len(data), 4096)
return data[(full_chunks - (1 if remainder else 2)) * 4096:]
如果数据长度是 4096 的倍数,这将返回最后两个完整块,如果不是 4096 的偶数倍,则返回最后一个块和余数。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.