2017-06-16 1 views
0

ich bin neu in Python und im Erstellen eines Schlüsselwort-Suchprogramms, das jedes Wort finden soll, das das selbe in einer Larg .log-Datei ist (für jetzt Wort " Zeitstempel ") und speichern Sie die Werte in separaten .log-Datei.Python, Schlüsselwort-Suchcode in einer großen .log-Datei

Dies ist der Code, den ich geschrieben habe und mein Problem ist, dass ich nur das erste Mal bekomme "Zeitstempel" Pops upp in der .log Text neue Datei, nicht die +100 anderen Zeiten, die ich will es ...

HILFE? :)


def suchen (Dateiname, Text): wichtig = []

with open(filename) as f: #open search file 
    f = f.readlines() #read searrch file 
for lines in f: 
     if text in lines: #if keyword is found take all lines 
      important.append(lines) #store all found keywords 
      print('done') 
      break 
    # file or 'sorted.txt' 
with open('sorted.log', 'w') as file_handler: 
     file_handler.write(f"{filename}\n Status: {important} \n") 

search(r'C:\Users\AppData\Local\Programs\Python\search\OJW74.log', 'Time stamp:') # search path 

*** ex. (Die .log Dateisperren wie diese)

Complete Response: 1636 59 02 FF 
Time stamp: 9792463 
Time between request and response(P2 time): 42 ms 

Complete Response: 1636 59 02 FF 
Time stamp: 9392463 
Time between request and response(P2 time): 42 ms 

Complete Response: 1636 59 02 FF 
Time stamp: 9794463 
Time between request and response(P2 time): 42 ms 
................... 
....................*** 
+0

Das erste Mal, wenn Sie Ihren Text finden, brechen Sie aus der Schleife. Versuchen Sie, die "Pause" zu entfernen – chapelo

Antwort

1

Die break Zeile in der for-Schleife wird die Schleife vollständig beenden, so wird es immer nur important.append(lines) einmal nennen - die break hier keinen Zweck dient.

Auch ich nehme an, dass Ihre print('done') Zeile zwei Einrückungsniveaus auf der linken Seite sein sollte, um anzuzeigen, dass die Schleife beendet ist!

+0

Danke, umbruch und die Einrückung Hilfe! jetzt bekomme ich jeden Wert :), aber sie sind alle hintereinander auf derselben Linie, gibt es einen Weg, das auch zu beheben? so dass ein Wert auf jeder Zeile und nicht auf demselben angezeigt wird –

Verwandte Themen