Как я могу скопировать и переместить все папки старше 30 дней в папку _History? - PullRequest
0 голосов
/ 27 марта 2019

Структура: 20170410.1207.te <- Дата (2017 04 10, 12:07) </p>

Существует папка компании, которая содержит несколько папок.Все папки с вышеупомянутой структурой, которые старше 30 дней, должны быть перемещены в папку _History (в основном их архивирование), но должно быть оставлено как минимум 5 независимо от того, какая временная метка.

В качестве значения времени строка должна быть взята из имени папки, чтобы ее можно было преобразовать в дату и сравнить с сегодняшней датой минус 30 дней.

Я также хочу создать файл журнала, который будет регистрировать, когда какие папки были перемещены в какое место.

Приведенный ниже код просто показывает мне имя файла, может кто-нибудь помочь мне, пожалуйста?

import os
import shutil

for subdir, dirs, files in os.walk("C:\Python-Script\Spielwiese"):
    for file in files:
        print(os.path.join(file))

shutil.move("C:\Python-Script\Spielwiese\", "C:\Python-Script\Spielwiese2")

1 Ответ

0 голосов
/ 27 марта 2019

Следующий код вернет список всех файлов за определенный период времени, отсортированный по времени создания на окнах. В зависимости от того, как вы хотите фильтровать, я могу дать вам больше информации. Вы можете, чем работать над полученным списком. Еще одна вещь заключается в том, что вы должны использовать pathlib для файловых путей Windows, чтобы не сталкиваться с проблемами с немецкими путями и экранированием юникода в вашем пути.

import os
import shutil

found_files = []

for subdir, dirs, files in os.walk("C:\Python-Script\Spielwiese"):
    for file in files:
        name = os.path.join(file)
        create_date = os.path.getctime(file)
        if create_date > some_time: # Put the timeframe here
            found_files.append((name, create_date))
found_files.sort(key=lambda tup: tup[1]) # Sort the files according to creation time
...