Прежде всего, вы захотите использовать модуль fileinput
для получения данных из нескольких файлов, например:
data = fileinput.FileInput()
for line in data.readlines():
print line
, который затем напечатает все строки вместе.Вы также хотите отсортировать, что вы можете сделать с помощью отсортированного ключевого слова.
Предполагая, что ваши строки начинаются с [2011-07-20 19:20:12]
, вы великолепны, так как этот формат не нуждается ни в какой сортировке выше и выше алфавита,так же:
data = fileinput.FileInput()
for line in sorted(data.readlines()):
print line
Поскольку, однако, у вас есть что-то более сложное, что вам нужно сделать:
def compareDates(line1, line2):
# parse the date here into datetime objects
NotImplemented
# Then use those for the sorting
return cmp(parseddate1, parseddate2)
data = fileinput.FileInput()
for line in sorted(data.readlines(), cmp=compareDates):
print line
Для получения бонусных баллов вы можете даже
data = fileinput.FileInput(openhook=fileinput.hook_compressed)
, который позволит вам читать в gzip-файлах журнала.
Тогда будет использоваться:
$ python yourscript.py access.log.1 access.log.*.gz
или подобное.