我做了一个代码读取一个二进制文件,如下所示:
file=open('myfile.chn','rb')
i=0
for x in file:
i=i+1
print(x)
file.close()
其结果如下(它的一部分): b'\x00\x00\x80?\x00\x00\x00\x005.xx\x00S\xd4\n'
我怎样才能检测到这个二进制文件的EOF? 让说,我想打印()后,我找到EOF。 我想这一点,但什么都没有发生。
if (x=='\n'):
print()
(更新)
@aix:让说,该文件有结果的几行,就像本例中,每行有“\ n”末,我希望把每行之间的空间。
b'\x00\x00\x80?\x00\x00\x00\x005.xx\x00S\xd4\n'
b'\x82\x93p\x05\xf6\x8c4S\x00\x00\xaf\x07j\n'
我怎样才能做到这一点?
一旦你抵达EOF,则for x in file:
循环将终止。
with open('myfile.chn', 'rb') as f:
i = 0
for x in f:
i += 1
print(x)
print('reached the EOF')
我已经改名为file
变量,以便它不会影内置 。
NPE的答案是正确的,但我觉得一些额外的澄清是必要的。
您尝试使用EOF喜欢的事来检测
if (x=='\n'):
...
所以也许你感到困惑我很困惑,直到今天以同样的方式。
EOF不是字符或字节。 它不是存在于文件的最后一个值,这不是可能在一些(甚至二进制)文件中间存在的东西。 在C世界EOF有一定价值,但即使是有它的价值是任何字符的值不同(甚至它的类型是不是“字符”)。 但是在Python世界EOF意思是“到达文件末尾”。 Python的帮助,以“读”功能说“......读取并返回所有数据,直到EOF”,而并不意味着‘直到EOF字节被发现’。 它的意思是“直到文件结束”。
什么是什么,是不是一个“EOF”更深层次的解释是在这里: http://faq.cprogramming.com/cgi-bin/smartfaq.cgi?answer=1048865140&id=1043284351