遇到假EOF时如何继续阅读文件?

时间:2015-04-15 09:03:04

标签: io readlines

我尝试使用Python读取文件。记事本显示有200行。

f = open('record.txt', 'r')
for line in f.readlines():
    print line

第17行出现问题,读取过程遇到错误的EOF。那么如何跳过假EOF并阅读休息线?感谢。

第17行看起来像这样:Iˌ$hǃɓǃ ɓI˔$hǃɓǃ ɓBɔ+Iʅ뭶DtHăɓǃ ɓBɔ+LΨBDŽ+Ĥhǃɓǃ ɓBɔ+Iʅ뭶DtHăɓǃ ɓBɔ+LΨBDŽ+ĤhLΨC

1 个答案:

答案 0 :(得分:1)

查看给出的行示例,您显然试图在文本模式下读取二进制文件。

你必须使用二进制模式来读取二进制文件以避免不同类型的问题,包括歪曲行结尾,由于EOF控制字符而过早停止读取,在转码为UTF8时丢失信息,反之亦然(因为所有UTF编码都是有损的) ),等等。

Binary mode is enabled by adding "b" to list of your mode chars:

onProgressUpdate(String... message)

此外,为了将来参考,f = open('record.txt', 'rb') for line in f.readlines(): print line 一次读取内存中的整个文件,如果文件很大,这可能是不需要的。通常迭代文件通常会更好 - 它与.readlines()相同,但是逐行读取行。所以,它可以很简单:

.readlines()

但是,如果您的文件在阅读时可能会发生变化,则这不适用。