新手问题。在Python 2.7.2。中,我在阅读文本文件时遇到问题,这些文件看起来似乎包含一些控制字符。具体来说,循环
for line in f
SUB
字符的行(ascii十六进制代码1a),将在没有任何警告或错误的情况下停止。使用f.readlines()
时结果相同。从本质上讲,就Python而言,只要遇到第一个SUB
字符,文件就会完成,而分配给line
的最后一个值就是该字符的直线。
有没有办法超越这样的角色和/或在遇到这个角色时发出警告?
答案 0 :(得分:8)
在Windows系统上0x1a
是文件结束字符。您需要以二进制模式打开文件才能通过它:
f = open(filename, 'rb')
缺点是你将失去面向行的性质并且必须自己分割线:
lines = f.read().split('\r\n') # assuming Windows line endings
答案 1 :(得分:6)
尝试以二进制模式打开文件:
f = open(filename, 'rb')