Подтвердить что ты не робот

Поиск файлов Glob в порядке поступления?

У меня есть эта строка кода в моем python script. Он ищет все файлы в определенном каталоге для * cycle *.log.

for searchedfile in glob.glob("*cycle*.log"):

Это работает отлично, однако, когда я запускаю свой script в сетевое расположение, он не ищет их по порядку и вместо этого ищет случайным образом.

Есть ли способ заставить код искать по дате?

Этот вопрос задан для php, но я не уверен в различиях.

Спасибо

4b9b3361

Ответ 1

Сортировка файлов по дате:

import glob
import os

files = glob.glob("*cycle*.log")
files.sort(key=os.path.getmtime)
print("\n".join(files))

См. также Сортировка КАК > .

Ответ 2

Ну. Ответ - нет. glob использует os.listdir, который описывается:

"Возвращает список, содержащий имена записей в каталоге, заданном путем. Список находится в произвольном порядке. Он не включает специальные записи '.' и"..", даже если они присутствуют в каталоге.

Итак, вам действительно повезло, что вы его отсортировали. Вам нужно отсортировать его самостоятельно.

Это работает для меня:

import glob
import os
import time

searchedfile = glob.glob("*.cpp")
files = sorted( searchedfile, key = lambda file: os.path.getctime(file))

for file in files:
 print("{} - {}".format(file, time.ctime(os.path.getctime(file))) )

Также обратите внимание, что для этого используется время создания, если вы хотите использовать время модификации, используемая функция должна быть getmtime.

Ответ 3

Использование glob no. Сейчас, когда вы его используете, glob хранит все файлы одновременно в коде и не имеет методов для организации этих файлов. Если важен только конечный результат, вы можете использовать второй цикл, который проверяет дату файла и курорты на основе этого. Если порядок разбора имеет значение, glob, вероятно, не лучший способ сделать это.

Ответ 4

Вы можете отсортировать список файлов, возвращающихся с помощью os.path.getmtime или os.path.getctime. См. Другой SO ответ и обратите внимание на комментарии.