【问题标题】:Python can't read log file correctly unless I paste its content in a new text file除非我将其内容粘贴到新的文本文件中,否则 Python 无法正确读取日志文件
【发布时间】:2017-04-27 04:41:50
【问题描述】:

我正在使用 open() 读取日志文件,但我得到了奇怪的内容。如果我用记事本++打开日志文件,复制内容并粘贴到新文件中,保存为.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)

我尝试了很多方法:

  1. cat 日志文件并重定向到一个新的文本文件,没有帮助
  2. 在 Notepad++ 中打开日志文件,另存为...一个新的文本文件,没有帮助
  3. 使用 linux tail 命令,将输出重定向到一个新的文本文件,没有帮助
  4. 使用python编解码器将其读取为utf-8,出现错误“python编解码器无法解码位置0的字节0xff:无效起始字节”
  5. 在 Notepad++ 中打开日志文件,复制其内容,粘贴到新文件中,保存到新的文本文件中,就可以了。

【问题讨论】:

  • 日志文件是如何创建的?
  • 发布日志文件的内容
  • @saulspatz 我不知道它是如何创建的,我猜它是由一些跟踪解码工具创建的。现在我发现如果我将它们拆分成小文件,vim只能显示第一个拆分(xaa),其他无法正确显示。
  • @vks 如果我通过 vim 打开拆分 xab,行如下:^@ ^@ ^@ ^@ ^@s^@e^@r^@v^@i^@c^ @e^@R^@e^@q^@u^@e^@s^@t^@ ^@{^@^M^@
  • 可能是编码问题。看看这个问题stackoverflow.com/questions/23918120/…

标签: python


【解决方案1】:

您无法读取该文件,因为它以UTF-16 编码,您可以通过BOM 的第一个字符来判断。 0xffUTF-16 的 BOM 的一部分。所以在阅读时只需添加encoding='utf16'(或在python2中使用codecs.openutf16

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-11
    • 1970-01-01
    • 1970-01-01
    • 2022-10-17
    • 1970-01-01
    相关资源
    最近更新 更多