我正在处理一个长字符字符串(值为 0..255 的元素),直接从文件中读取。我需要将字符串分成 8 个字节的块。我希望这能奏效:
rawindex = file.read()
for chunk in rawindex[::8]:
print sys.stderr, len(chunk)
...但是 len() 总是返回 1。我做错了什么?
更多信息:* 这不是家庭作业 * 我可以使用 range(,,8),但我真的很想知道为什么上面的示例不起作用
我正在处理一个长字符字符串(值为 0..255 的元素),直接从文件中读取。我需要将字符串分成 8 个字节的块。我希望这能奏效:
rawindex = file.read()
for chunk in rawindex[::8]:
print sys.stderr, len(chunk)
...但是 len() 总是返回 1。我做错了什么?
更多信息:* 这不是家庭作业 * 我可以使用 range(,,8),但我真的很想知道为什么上面的示例不起作用
数组索引中的“step”参数只迭代每个第 8 个元素,而不是一次迭代 8 个元素。您的代码应如下所示:
step = 8
rawindex = file.read()
for index in range(0, len(rawindex), step):
print sys.stderr, len(rawindex[index:index+step])
您可以自己读取正确大小的块。
read_chunk = lambda: my_file.read(8)
for chunk in iter(read_chunk, ''):
print len(chunk)
rawindex = file.read() # this line will return the file read output as a string. For example rawindex = abc efgh ijk
rawindex[::8] # will returns all the eight charactors from the above string. so the result will be 'ah'
所以有效地 for 循环将for chunk in 'ah':
在第一个循环块中是 a。len('a') 将是 1。所以 len(chunk) 总是会返回 1。
我认为您应该使用范围而不是 rowindex[::8]。