Выбор файлов по дате и текст, Python - PullRequest
0 голосов
/ 02 июля 2018

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

for folderName, subfolders, filenames in os.walk(r'C:\User\Documents\Reports'):

    for file in filenames:
            if os.path.getmtime(file) < datetime.timedelta(days=31) AND if 'Summary' in file or 'Summaries' in file :
                    try: shutil.copy(os.path.join(folderName, file), r'C:\User\Documents\File_Selections')
                    except: 
                            print(folderName, file)

Итак, я просматриваю папку «Отчеты» для каждого файла, который был последний раз изменен в прошлом месяце, И если его имя включает «сводку» или «сводку». Затем я хочу скопировать каждый файл в определенную папку и распечатать результаты.

Моя основная проблема заключается в том, как работает сравнение дат, чтобы были выбраны только файлы, измененные за последний месяц? Также я был не уверен, правильно ли используется оператор AND в операторе if.

1 Ответ

0 голосов
/ 02 июля 2018

Вам не нужно ключевое слово if после ключевого слова and. and правильно. Вы выбираете все файлы в каталоге, которые не старше месяца, И они содержат либо «сводку», либо «сводку»

Линия
if os.path.getmtime(file) < datetime.timedelta(days=31) and 'Summary' in file or 'Summaries' in file:

не будет работать, так как os.path.getmtime () возвращает число с плавающей точкой.

Вам необходимо использовать total_seconds() после вызова datetime.timedelta. Например,

if os.path.getmtime(file) < datetime.timedelta(days=31).total_seconds()

total_seconds() вернет значение datetime.timedelta как float

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