Python ищет несколько каталогов и читает выбранные файлы

Я ищу помощь в выполнении действий с набором файлов в двух разных каталогах с использованием Python.

Я пытаюсь:

  1. Поиск в двух разных каталогах

  2. Найдите 15 последних измененных файлов (сравнивая файлы в обоих каталогах)

  3. Прочитать все 15 недавно измененных файлов построчно

Я могу выполнить чтение через один каталог файлов, используя glob. Однако я не могу указать несколько каталогов. Есть ли другой способ сделать это?

Ниже приведен мой код, который выполняет захват последних 15 файлов в каталоге dir1, но не в каталоге dir2.

dir1 = glob.iglob("/dir1/data_log.*")
dir2 = glob.iglob("/dir2/message_log.*")

latest=heapq.nlargest(10, dir1, key=os.path.getmtime)
for fn in latest:
    with open(fn) as f:
        for line in f:
            print(line)

person MBasith    schedule 27.07.2016    source источник


Ответы (1)


Я не уверен, что это то, что вам нужно, но если бы вы использовали glob.glob вместо glob.iglob, вы могли бы сделать

dir1 = glob.glob("/dir1/data_log.*")
dir2 = glob.glob("/dir2/message_log.*")

latest=heapq.nlargest(10, dir1+dir2, key=os.path.getmtime)

И на самом деле, если вам не нравится идея использования списков (glob.glob) вместо генераторов (glob.iglob), вы можете сделать

from itertools import chain

dir1 = glob.iglob("/dir1/data_log.*")
dir2 = glob.iglob("/dir2/message_log.*")

latest=heapq.nlargest(10, chain(dir1, dir2), key=os.path.getmtime)
person Julien Spronck    schedule 27.07.2016