datetime.datetime
объекты не поддерживают нарезку.Я думаю, что вы пытаетесь сделать это str(x)[11:20]
: то есть конвертировать x
в строку (что показывает print x
) и взять 11: 20-ые индексы этого.
Лучшевозможно, стоит использовать strftime
: x.strftime("%H:%M:%S")
.
Но: как только вы получите эту строку, вам нужно будет провести какое-то сравнение, и я не совсем уверенкак ты это делаешьВозможно, вам придется пойти в другом направлении:
import datetime
import sys
cutoff = datetime.datetime.now() - datetime.timedelta(minutes=3)
line_format = "%a %b %d %H:%M:%S %Y; TCP;"
lines = iter(sys.stdin) # or iter(f) for a file object f
# skip all the lines before three minutes ago
for line in lines:
logtime = datetime.datetime.strptime(line.strip(), line_format)
if logtime >= cutoff:
print line
break
# print out the rest of the lines
for line in lines:
print line
Это можно было бы сделать гораздо интереснее, но я думаю, что это будет сделано.Вам может потребоваться выполнить дополнительную обработку строк, если формат strptime
не совсем правильный или строки имеют фактическое содержимое, отличное от "TCP;"
.