繁体   English   中英

在 for 循环中连接最后两个字符串

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM