我正在处理一个长字符串(值为0..255的元素),直接从文件中读取。我需要将字符串分成8个字节的块。我希望这可行:
rawindex = file.read()
for chunk in rawindex[::8]:
print sys.stderr, len(chunk)
...但len()总是返回1.我做错了什么?
更多信息: *这不是功课 *我可以玩范围(,, 8),但我真的想知道为什么上面的例子不起作用
答案 0 :(得分:0)
数组索引中的'step'参数只迭代每个第8个元素,而不是一次迭代8个元素。您的代码应如下所示:
step = 8
rawindex = file.read()
for index in range(0, len(rawindex), step):
print sys.stderr, len(rawindex[index:index+step])
答案 1 :(得分:0)
您可以自己阅读正确尺寸的块。
read_chunk = lambda: my_file.read(8)
for chunk in iter(read_chunk, ''):
print len(chunk)
答案 2 :(得分:0)
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':
在第一个循环中,块将是一个。 len('a')将为1.因此len(chunk)将始终返回1.
我认为你应该使用range而不是rowindex [:: 8]。