Я пытаюсь распечатать файл .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').
Есть идеи, как решить проблему с этими невидимыми управляющими символами?