Python druckt immer noch eine Zeile, wenn ich angebe, dass dies nicht der Fall ist


Galaktische GrünZitrone

Ich glaube nicht, dass der Titel wirklich sagt, was mein Problem ist, aber ich weiß nicht, wie ich es formulieren soll.
Wie auch immer, ich drucke alle Zeilen aus einer Protokolldatei und erinnere mich dann an die letzte Zeile in einer Variablen. Ich benutze dann eine for-Schleife, um die gesamte Datei erneut zu durchsuchen, aber ich nutze die Tatsache, dass die Zeit am Anfang jeder Zeile steht, um zu überprüfen, ob die Zeit größer ist als die der letzten Zeile, die ich beim letzten Drucken gespeichert habe alle Zeilen.
Jetzt kommen wir zu meinem Problem. Es druckt immer noch die letzte Zeile, auch wenn ich es nicht will.
Das könnte verwirrend sein, also lass mich die Ausgabe verwenden

['16', '31', '18']
[16:31:18] [Async Chat Thread - #121/INFO]: <seba_www> cat?
# the above line is the last line it printed the first time it went trough all the lines
# and I don't want to print it


['16', '31', '19']
[16:31:19] [Async Chat Thread - #121/INFO]: <seba_www> wdasdww
# the above line is the new line I want to be printed

Ich habe versucht, es mit einer einfachen if-Anweisung zu beheben:

if line != last_line: 
    print(line)

aber es druckt es trotzdem...

Es könnte wirklich chaotisch sein, aber ich werde auch den ganzen Codeblock hier einfügen, vielleicht hilft es:

for line in logs:
    print(line)

while True:
    time.sleep(10)
    last_line = line
    
    s = last_line.split()
    s1 = s[0]
    if "[" in s1:
        d2 = split(s1)

        d = s1.find("[")
        del d2[d]

        d1 = s1.find("]")
        del d2[d1 -1]

        d2 = listToString(d2)
        lastLine_list = d2.split(':')

        logs = open(os.path.join(sys.path[0], 'latest1.log'))

        for line in logs:
            s = line.split()
            s1 = s[0]
            if "[" in s1:
                d2 = split(s1)
                
                d = s1.find("[")
                del d2[d]
                
                d1 = s1.find("]")
                del d2[d1 - 1]
                
                d2 = listToString(d2)
                d2list = d2.split(":")

                print(d2list)

                if line != last_line:
                    if d2list[0] >= lastLine_list[0]:
                        if d2list[1] >= lastLine_list[1]:
                            if d2list[2] >= lastLine_list[2]:
                                print(line)
                                time.sleep(5)
    logs.close()
Jawohl

Was passiert, wenn Sie diese Zeile versuchen?

if line != last_line: 
    print(line)

wie

if last_line not in line: 
    print(line)

?

Verwandte Artikel