#python
#python
Вопрос:
Я хочу получить имя самого последнего файла из определенного каталога в python?
Я использовал это
import os
import glob
def get_latest_file(path, *paths):
"""Returns the name of the latest (most recent) file
of the joined path(s)"""
fullpath = os.path.join(path, *paths)
print fullpath
list_of_files = glob.glob(fullpath)
if not list_of_files:
return None
latest_file = max(list_of_files, key=os.path.getctime)
_, filename = os.path.split(latest_file)
return filename
if __name__ == "__main__":
print get_latest_file('ocr', 'uploads', '*.png')
Но я хочу, чтобы код возвращал имя самого последнего файла без указания расширения файла. Итак, допустим, есть ли jpg, jpeg, png, gif
Я хочу, чтобы фрагмент охватывал их все.
Какие-либо входные данные?
Комментарии:
1. с помощью glob.glob вы также можете заменить суффикс окончания файла. вы пробовали: print get_latest_file(‘ocr’, ‘uploads’, ‘*’)
2. @hasan Это ответ. Вы хотите записать его более четко?
Ответ №1:
с помощью последней строки вы просто извлекаете файлы с расширением .png
get_latest_file('ocr', 'uploads', '*.png')
если вы хотите получить все файлы, не зависящие от расширения, вам просто нужно удалить спецификацию расширения в коде для glob.glob(«). Это приведет к извлечению всех файлов в вашем каталоге. если вам все еще нужно какое-либо расширение, но не имеет значения, какое, вы также можете получить их с помощью glob.glob(. *), я думаю.
Ответ №2:
Если вас не волнует расширение простой ОС.подойдет пошаговая итерация. Вы можете расширить это для фильтрации расширений, если вам нужно.
import os
all_files = {}
root = 'C:workspacewerkzeug-master'
for r, d, files in os.walk(root):
for f in files:
fp = os.path.join(root, r, f)
all_files[os.path.getmtime(fp)] = fp
keys = all_files.keys()
keys.sort(reverse = True)
print all_files[keys[0]]