在Python中读取SUB以外的行

时间:2012-03-01 17:01:58

标签: python ascii

新手问题。在Python 2.7.2。中,我在阅读文本文件时遇到问题,这些文件看起来似乎包含一些控制字符。具体来说,循环

for line in f

一旦遇到包含SUB字符的行(ascii十六进制代码1a),

将在没有任何警告或错误的情况下停止。使用f.readlines()时结果相同。从本质上讲,就Python而言,只要遇到第一个SUB字符,文件就会完成,而分配给line的最后一个值就是该字符的直线。

有没有办法超越这样的角色和/或在遇到这个角色时发出警告?

2 个答案:

答案 0 :(得分:8)

在Windows系统上0x1a是文件结束字符。您需要以二进制模式打开文件才能通过它:

f = open(filename, 'rb')

缺点是你将失去面向行的性质并且必须自己分割线:

lines = f.read().split('\r\n')  # assuming Windows line endings

答案 1 :(得分:6)

尝试以二进制模式打开文件:

f = open(filename, 'rb')