文件中的奇怪字符会以静默方式中断循环

时间:2013-05-13 19:16:13

标签: python

我正在使用python解析文件并且for循环中断 Notepad ++中的字符看起来像这样

©SUB0

我的循环很简单

for line in open('myfile.dat').readlines():
    print line  
    print x
    x+=1

没有错误,py文件就退出了。

我应该怎么做才能让它跳过这个角色?

2 个答案:

答案 0 :(得分:3)

该文件是二进制文件吗?如果是这样,您可以尝试将open('myfile.dat', 'rb')打开为二进制文件。如果以文本形式打开,文件结束字符可能会导致其过早停止读取。

答案 1 :(得分:1)

这是因为您遇到的角色是substitute character。 此字符替换了在您的设备上无法读取或打印的字符(无论您的情况如何)。

其表示形式为26(ASCII),SUB,0x1a(十六进制)和^ Z。

这不是Pythons的错,因为每种编程语言都会破坏。它是一个历史缺陷,只能通过不在文件中使用它来避免。

正如用户BrenBarn建议的那样,如果可能的话,尝试将其解析为二进制文件。