我正在使用 open() 读取日志文件,但我得到了奇怪的内容。如果我用Notepad++打开日志文件,复制内容并将其粘贴到新文件中,另存为.txt文件,open()可以读取正确的内容。 代码是:
with open(a_file, 'r') as my_file:
for line in my_file:
line_number += 1
if line_number == 1060 or line_number == 1061:
print(line)
我尝试了很多方法:
- cat 日志文件并重定向到新的文本文件,没有帮助
- 在 Notepad++ 中打开日志文件,另存为...新的文本文件,没有帮助
- 使用linux tail命令,将输出重定向到新的文本文件,没有帮助
- 使用python编解码器将其读取为utf-8,出现错误“python编解码器无法解码位置0中的字节0xff:无效的起始字节”
- 在 Notepad++ 中打开日志文件,复制其内容,粘贴到新文件中,保存到新的文本文件,一切正常。
最佳答案
您无法读取该文件,因为它是用 UTF-16
编码的,您可以通过第一个字符来判断 BOM 是哪个。 。 0xff
是 UTF-16
BOM 的一部分。因此,阅读时只需添加 encoding='utf16'
(或在 python2 中使用 codecs.open
和 utf16
)
关于Python 无法正确读取日志文件,除非我将其内容粘贴到新的文本文件中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43648786/