Ответ 1
Сортировка файлов по дате:
import glob
import os
files = glob.glob("*cycle*.log")
files.sort(key=os.path.getmtime)
print("\n".join(files))
См. также Сортировка КАК > .
У меня есть эта строка кода в моем python script. Он ищет все файлы в определенном каталоге для * cycle *.log.
for searchedfile in glob.glob("*cycle*.log"):
Это работает отлично, однако, когда я запускаю свой script в сетевое расположение, он не ищет их по порядку и вместо этого ищет случайным образом.
Есть ли способ заставить код искать по дате?
Этот вопрос задан для php, но я не уверен в различиях.
Спасибо
Сортировка файлов по дате:
import glob
import os
files = glob.glob("*cycle*.log")
files.sort(key=os.path.getmtime)
print("\n".join(files))
См. также Сортировка КАК > .
Ну. Ответ - нет. 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
.
Использование glob no. Сейчас, когда вы его используете, glob хранит все файлы одновременно в коде и не имеет методов для организации этих файлов. Если важен только конечный результат, вы можете использовать второй цикл, который проверяет дату файла и курорты на основе этого. Если порядок разбора имеет значение, glob, вероятно, не лучший способ сделать это.
Вы можете отсортировать список файлов, возвращающихся с помощью os.path.getmtime
или os.path.getctime
. См. Другой SO ответ и обратите внимание на комментарии.