2016-03-26 5 views
-2

Ich habe eine Datei mit Computerprotokollen. Wenn ich es in Notepad öffnen ++, die ersten paar Zeilen wie folgt aussehen -Python liest Daten als Binärzeichenfolgen anstelle von Text aus der Protokolldatei

##################### 
[2015/07/03, 13:26:40.368, INFO, 00004588] Legacy mode. Epoch number not found. Allowing message. 
[2015/07/03, 13:26:40.368, INFO, 00004588] >>>AgentGetState() called. 
[2015/07/03, 13:26:40.368, INFO, 00004588] AgentGetState Returning 00000000.<<< 
[2015/07/03, 13:26:54.660, INFO, 00010404] Subject name = am4prdapp09.fc.core.windows.net 
[2015/07/03, 13:26:54.660, INFO, 00010404] Legacy mode. Epoch number not found. Allowing message. 
###################### 

Nun, ich lese sie in Python wie so -

f = open("log_file.log") 
a = [] 
for i in f: 
    a.append(i) 

Wenn ich nun einen Blick auf den Inhalt:

a[0] 

Dies ist, was ich sehe -

'\xff\xfe[\x002\x000\x001\x005\x00/\x000\x007\x00/\x000\x003\x00,\x00 \x001\x003\x00:\x002\x006\x00:\x004\x000\x00.\x003\x006\x008\x00,\x00 \x00 \x00I\x00N\x00F\x00O\x00,\x00 \x000\x000\x000\x000\x004\x005\x008\x008\x00]\x00 \x00 
\x00j\x00e\x00c\x00t\x00 \x00n\x00a\x00m\x00e\x00 \x00=\x00 \x00a\x00m\x004\x00p\x00r\x00d\x00a\x00p\x00p\x000\x009\x00.\x00f\x00c\x00.\x00c\x00o\x00r\x00e\x00.\x00w\x00i\x00n\x00d\x00o\x00w\x00s\x00.\x00n\x00e\x00t\x00\r\x00\n' 

Was fehlt mir?

+5

Was ist die Codierung der Datei? – MaxNoe

+0

und Ihre Python-Version? –

+0

Funktioniert gut für mich ... 'a [0]' = '#####################' – Signal

Antwort

2

Versuchen:

f = open("log_file.log", 'r') 
data = f.readlines() 
for i in data: 
    print i 
>>> line 
>>> ... 
>>> ... 
+0

Sie sollten 'with open ...' verwenden – MaxNoe

+0

Python-Dateiobjekte sind iterable zu beginnen. Sie sollten 'für i in f' (oder beschreibender,' für line in f') tun. Der einzige Grund, 'readlines()' zuerst zu nennen, ist, wenn Sie nur die Kosten für das Front-Loading der ganzen Sache in den Speicher essen wollen. –

Verwandte Themen