python по-прежнему печатает строку, если я указываю, чтобы он этого не делал

#python

#python

Вопрос:

Я не думаю, что заголовок действительно говорит о моей проблеме, но я не знаю, как ее сформулировать.
В любом случае, я печатаю из файла журнала все строки, затем я запоминаю последнюю строку в переменной. Затем я использую цикл for, чтобы снова просмотреть весь файл, но я использую тот факт, что у него есть время в начале каждой строки, чтобы проверить, больше ли время, чем в последней строке, которую я сохранил при последней печати всех строк.
Теперь мы переходим к проблеме, которая у меня есть. Он по-прежнему печатает последнюю строку, даже если я этого тоже не хочу.
Это может сбить с толку, поэтому позвольте мне использовать вывод

 ['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
 

Я попытался исправить это с помощью простого оператора if:

 if line != last_line: 
    print(line)
 

но он все равно печатает ее…

Это может быть действительно грязно, но я собираюсь поместить сюда весь блок кода, возможно, это поможет:

 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()
 

Комментарии:

1. Вы убедились, что это на самом деле последняя строка, и что это не пустая строка в качестве последней строки в файле?

2. Да, у меня есть, проблема здесь не в этом.

Ответ №1:

Что произойдет, если вы попробуете эту строку

 if line != last_line: 
    print(line)
 

как

 if last_line not in line: 
    print(line)
 

?

Комментарии:

1. Я работал. Большое спасибо, я до сих пор не знаю, почему, но это работает именно так. Я приму этот ответ через 3 минуты, так как он не позволяет мне прямо сейчас.