Как я могу перебрать объект pathlib.Path в Python3? - PullRequest
0 голосов
/ 15 марта 2019

Требования указаны в кавычках.Хочу ли я получить список или генератор для получения имен файлов?Я открыт для использования любых современных библиотек, но 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")

1 Ответ

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

Мне нужно сузить сферу моего вопроса. Я бы предпочел полностью удалить этот вопрос.

...