@10farid10
Учу python :)

Как найти файлы с определенными условиями в их имени?

Есть целая тонна файлов вида ot-2020-01-01.txt
В каждом названии файла есть его дата. Так вот, как можно найти и записать в массив имена файлов, отдавая диапазон дат "с даты - по дату"? (например input-ом)
На данный момент мой код выглядет так и он записывает в массив все названия файлов в этой папке. далее я их объеденяю в один файл
ipmort os
path = "C:\files"
mylist = os.listdir(path)
with open('final.txt', 'w', encoding='utf-8') as outfile:
    for fname in mylist:
        with open(fname, encoding='utf-8') as infile:
            for line in infile:
                outfile.write(line)
  • Вопрос задан
  • 268 просмотров
Решения вопроса 1
adugin
@adugin Куратор тега Python
Просто сравнивайте названия файлов целиком (либо только часть с датой) как строки:
'ot-2020-01-01.txt' < 'ot-2020-01-02.txt' < 'ot-2020-12-17.txt'

from pathlib import Path

date1 = '2020-11-01'
date2 = '2020-12-17'

files = [path.name for path in Path('path/to/dir').glob('ot-*.txt') if f'ot-{date1}.txt' <= path.name <= f'ot-{date2}.txt']
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Mi11er
@Mi11er
A human...
В голову сразу пришло 2 вещи, или glob (регулярка ) или работа с Datetime, вводим 2 даты и сравниваем с именем файла ( из которого тоже берем дату )

Взяли дату из файла
n = [i for i in a if i.isdigit()]
n = "".join(n)


Получили дату
d = datetime.datetime.strptime(n,"%Y%m%d")

Сравнили с тем что ввели...
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы