EOF二进制文件使用的python(EOF in a binary file using pytho

2019-10-16 17:00发布

我做了一个代码读取一个二进制文件,如下所示:

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'

我怎样才能做到这一点?

Answer 1:

一旦你抵达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变量,以便它不会影内置 。



Answer 2:

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



文章来源: EOF in a binary file using python