0

我正在处理一个长字符字符串(值为 0..255 的元素),直接从文件中读取。我需要将字符串分成 8 个字节的块。我希望这能奏效:

rawindex = file.read()
for chunk in rawindex[::8]:
    print sys.stderr, len(chunk)

...但是 len() 总是返回 1。我做错了什么?

更多信息:* 这不是家庭作业 * 我可以使用 range(,,8),但我真的很想知道为什么上面的示例不起作用

4

3 回答 3

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])
于 2012-08-04T09:08:13.353 回答
0

您可以自己读取正确大小的块。

read_chunk = lambda: my_file.read(8)
for chunk in iter(read_chunk, ''):
    print len(chunk)
于 2012-08-04T09:19:58.307 回答
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': 在第一个循环块中是 a。len('a') 将是 1。所以 len(chunk) 总是会返回 1。

我认为您应该使用范围而不是 rowindex[::8]。

于 2012-08-04T09:29:53.977 回答