Python没有按预期处理char字符串

时间:2012-08-04 09:01:42

标签: python for-loop binaryfiles

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

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

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

更多信息: *这不是功课 *我可以玩范围(,, 8),但我真的想知道为什么上面的例子不起作用

3 个答案:

答案 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]。

相关问题