Python在读取fi时忽略行

2024-10-01 15:44:48 发布

您现在位置: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时,我还处于新手阶段,可能忽略了一个非常基本的错误)

编辑01: @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')以外的转义字母。 你知道如何解决这些隐形控制字符的问题吗?你知道吗


Tags: 文件iologsourcenewreadrecordflash

热门问题