Вот код, который должен помочь вам начать работу. Он определяет функцию, которая будет создавать структуру данных из вложенных словарей, которые соответствуют содержимому начального каталога root и всего, что находится под ним в файловой системе. Каждый словарь каждого элемента, имеющий ключ 'type'
со значением 'file'
, также будет иметь ключ 'stat'
, который может содержать любые метаданные файла, которые вы хотите или нуждаетесь, такие как время создания, время последнего изменения, длина в bytes,… et c.
Вы можете использовать его, чтобы получить снимки «до» и «после» отслеживаемого каталога и использовать их для сравнения. Я упустил последнее (сравнение), поскольку не уверен, что именно вас интересует.
Обратите внимание, что когда я действительно приступил к реализации этого, я обнаружил, что проще написать рекурсивную функцию чем использовать os.walk()
, как я предложил в комментарии.
Следующее реализует версию функции и распечатывает структуру данных вложенных словарей, которые она возвращает.
import os
from pathlib import PurePath
def path_to_dict(path):
result = {}
result['full_path'] = PurePath(path).as_posix()
if os.path.isdir(path):
result['type'] = 'dir'
result['items'] = {filename: path_to_dict(os.path.join(path, filename))
for filename in os.listdir(path)}
else:
result['type'] = 'file'
result['stat'] = 'os.stat(path)' # Preserve any needed metadata.
return result
root = './folder' # Change as desired.
before = path_to_dict(root)
# Pretty-print data structure created.
from pprint import pprint
pprint(before, sort_dicts=False)