Простым решением для этого будет простое создание нового dict
и добавление ваших item.absolute()
и itemTime.timestamp
в качестве пар ключ-значение
x[str(item.absolute())] = itemTime.timestamp
Затем сортировка по значениям,
items_sorted = {k: v for k, v in sorted(x.items(), key=lambda item: item[1])}
и повторение первых len(dict)-n
значений
from pathlib import Path
from itertools import islice
import arrow
import os
import sys
x = {}
n = 10
filesPath = r"d:/screen/work/"
criticalTime = arrow.now().shift(hours=+5).shift(days=-7)
for item in Path(filesPath).glob('*'):
if item.is_file():
itemTime = arrow.get(item.stat().st_mtime)
if itemTime < criticalTime:
x[str(item.absolute())] = itemTime.timestamp
items_sorted = {k: v for k, v in sorted(x.items(), key=lambda item: item[1])}
for path, itemTime in islice(items_sorted.items(), len(x)-n):
os.remove(str(item.absolute()))
print(path)
Кроме того, это решение не будет хорошо масштабироваться на очень большом количестве файлов. Сортировка всего текста может быть трудоемкой и неэффективной, но лучший подход был бы гораздо более сложным