Требования указаны в кавычках.Хочу ли я получить список или генератор для получения имен файлов?Я открыт для использования любых современных библиотек, но pathlib кажется лучшим выбором.
Сценарий должен запускаться ежедневно как пользователь uid через задание cron (например, Customers.crontab) при запуске, сценарийдолжен делать эквивалент
mkdir -p archive/text archive/audio
При запуске скрипт должен пройти по исходному каталогу / nord / data и переместить все аудиофайлы с меткой даты старше 180 дней в архив / аудиоПерейдите в каталог транскриптов и переместите все транскрипты вызовов, связанные с вызовами старше 180 дней, в /nord/data/archive/text/.
Звук находится в файлах с именем YYYYMMDD_HHmmss_ (hash) .wav.стенограммы вызовов находятся в файлах ГГГГММДД_ЧЧммсс_ (хеш) .xml.Другие файлы перемещать не нужно.
Очень важно посмотреть имя файла (ведущий YYYYMMDD), чтобы определить дату соответствующего вызова - мы не можем полагаться на время модификации / создания файла, так как повторная обработка можетизмените даты и приведите к несоответствующим шагам.
Я хочу использовать pathlib для поиска файлов («сканирования») исходного каталога и решил этот вопрос.У меня также есть проблема разницы во времени благодаря Патрику , но я не могу сериализовать код, который он отправил на 55094610 .Ниже приведен пример того, что я пытаюсь сделать.Это не рабочий код, ни в коем случае.
from pathlib import Path
from datetime import datetime, timedelta
toDay = datetime.today().strftime("%Y%m%d")
wavedir = Path('/nord/data')
# source dir
waveglob = wavedir.glob('**/*.wav')
# creates generator of pathlib paths, I think
ewaveList = list(Path(wavedir).glob('**/*.ewav'))
# creates a list of paths
filename = ewaveList.pop()
# gets one path at a time.
def get_date_from_filename(waveglob):
return datetime.strptime(filename[:8], "%Y%m%d")
if get_date_from_fname + timedelta(days=180) <= toDay:
print ("File is >= 180 days old")
else:
print ("file is <= 180 days old")