У меня есть ряд папок, и я хочу смочь выполнить функцию, которая найдет последний раз отредактированный файл и скажет мне название файла и папки, в которой это находится.
Расположение папки:
root
Folder A
File A
File B
Folder B
File C
File D
etc...
Любые подсказки для запущения меня, поскольку я врезался во что-то вроде стены.
Помогает обернуть встроенный каталог, идущий в функция, которая возвращает только полные пути к файлам. Затем вы можете просто взять функцию, которая возвращает все файлы, и выбрать тот, который имеет наибольшее время модификации:
import os
def all_files_under(path):
"""Iterates through all files that are under the given path."""
for cur_path, dirnames, filenames in os.walk(path):
for filename in filenames:
yield os.path.join(cur_path, filename)
latest_file = max(all_files_under('root'), key=os.path.getmtime)
Вам следует посмотреть на функцию os.walk , а также на os.stat , которая позволяет вы делаете что-то вроде:
import os
max_mtime = 0
for dirname,subdirs,files in os.walk("."):
for fname in files:
full_path = os.path.join(dirname, fname)
mtime = os.stat(full_path).st_mtime
if mtime > max_mtime:
max_mtime = mtime
max_dir = dirname
max_file = fname
print max_dir, max_file
Используйте os.path.walk ()
для просмотра дерева каталогов и os.stat (). St_mtime
, чтобы получить время файлов.
Функция, которую вы передаете в os.path.walk ()
(параметр visit
), просто должна отслеживать наибольшее mtime, которое он видел, и где он его видел.