python - Python在读取文件时忽略行
问题描述
我正在尝试将 .log 文件打印到控制台。我使用的功能是:
def read():
outputData = open('/Users/me/Desktop/folder/output_test.log', 'r')
rawOutputData = outputData.read()
print(rawOutputData)
outputData.close()
我也尝试过使用
import io
import os
def read():
outputData = io.FileIO(os.path.join('/Users/me/Desktop/folder/output_test_txt.log'))
rawOutputData = outputData.read()
print(rawOutputData)
outputData.close()
这两个都将文件打印到控制台,但是,这些函数似乎忽略了日志文件中的部分内容,我不知道为什么。日志文件中重复出现的部分如下所示:
[...
[2018.10.30 13:22:31]- [AVL.WRITE]->Record Saved:
[2018.10.30 13:22:31]-[AVL] SOURCE: 0
HDOP Actual: 0.8
Timestamp: 1540905751000
Priority: 0
Longitude: 99635883
Latitude: 599993683
Altitude: 55
Angle: 179
Sat: 14
Speed: 0
Event IO ID: 0
IO[ 1]: 1
IO[179]: 8
IO[ 66]: 26176
IO[ 21]: 5
IO[ 62]: 0x0000000000000000
IO[ 72]: 2
IO[236]: 11
IO[237]: 19
IO[238]: 5242
Record Size: 60 Bytes (25,35)
[2018.10.30 13:22:31]-[FLASH]-> New Rec Addr: 1E100 Len: 97
[...
如果我执行该函数,这部分日志文件将打印为:
[...
[2018.10.30 13:22:31]- [AVL.WRITE]->Record Saved:
[2018.10.30 13:22:31]-[AVL] SOURCE: 0
HDOP Actual: 0.8
Speed: 0
Event IO ID: 0
Record Size: 60 Bytes (25,35)
[2018.10.30 13:22:31]-[FLASH]-> New Rec Addr: 1E100 Len: 97
[...
这也发生在具有大致相同格式的日志文件的其他几个部分,所以我猜是因为这个?我只需要知道为什么会这样。
仅供参考,我的目标是在某些时候提取数据
[XXXX.XX.XX XX:XX:XX]-[AVL] SOURCE: 0
... #this is the data of the log file I need
[XXXX.XX.XX XX:XX:XX]-[FLASH]-> New Rec Addr: 1E100 Len: 97
并将它们放在不同的文件中进行分析。
(请记住,当谈到 Python 时,我仍处于新手阶段,可能会忽略一个非常基本的错误)
EDIT01:@9769953 的想法似乎是正确的。如果我使用:
print(repr(rawOutputData))
控制台打印出:
[AVL.WRITE]->Record Saved:\r\n\r\n[2018.10.30 13:22:31]-[AVL] SOURCE:
0\r\n HDOP Actual:\t0.8\r\r\n Timestamp:\t1540905751000\r
Priority:\t0\r Longitude:\t99434683\r Latitude:\t535483683\r
Altitude:\t55\r Angle:\t\t179\r Sat:\t\t16\r Speed:\t\t0\r\n\r\n
\r\n Event IO ID:\t0\r\n\r\n \tIO[ 1]: 0\r \tIO[179]: 0\r \tIO[ 66]:
26146\r \tIO[ 21]: 5\r \tIO[ 62]: 0x0000000000000000\r \tIO[ 72]: 0\r
\tIO[236]: 15\r \tIO[237]: 11\r \tIO[238]: 1022\r \n \n \r\n Record
Size:\t60 Bytes (25,35)\r\n[2018.10.30 13:22:31]-[FLASH]-> New Rec
Addr: 1E100 Len: 60\r\n [PERIODIC.GPS.INFO]:\r\n \n Module:\t\r GPS
State:\t1 / gps on\r
所以它实际上包含了原始日志中的所有数据,但是,它还包含除 ('\n') 之外的其他转义字母。知道如何解决这些不可见的控制字符的问题吗?
解决方案
推荐阅读
- go - 取消上下文取消的进一步操作
- ionic-cli - npm 错误!ERESOLVE 无法解析依赖树
- flutter - 如何在 ListView 中显示 FontAwesome 库中的所有图标?
- c++ - 如何通过 IMFSourceReader 使用自定义堆
- linux - 木偶,希拉 | 如何获得价值
- azure-devops - 我们如何在 Azure Devops Boards 的进程中添加计算的自定义字段
- sql - SSIS - 仅在基于匹配多列中的至少 1 列不存在的情况下插入记录
- javascript - 当按钮在 Formik 组件之外时,在提交按钮上使用 formik.isValid
- javascript - 无法按类名访问文本区域
- jquery - 单击底部的按钮直接转到顶部的输入字段?