Как найти файлы с определенными условиями в их имени?
Есть целая тонна файлов вида 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)
Ответы (2 шт):
Автор решения: Oleg Grishko
→ Ссылка
только начал изучать python, так что не обессудьте... как по мне можно список дат из периода загнать в массив, а потом в цикле по каждой дате отфильтровать файлы
import os
import datetime
a = datetime.date(2020, 11, 1)
b = datetime.date(2020, 12, 7)
one_day = datetime.timedelta(1)
day = a
dates = []
while day <= b:
dates.append(str(day))
day += one_day
path = "d:\\tmp"
mylist = os.listdir(path)
for date in dates:
print(date + ':')
result_filter = filter(lambda x: x.endswith(date+'.txt'), mylist)
for fname in result_filter:
print(fname)
Автор решения: Farid
→ Ссылка
Нашел ответ, если кому-то интересно
from pathlib import Path
date1 = '2020-11-01'
date2 = '2020-12-17'
files = [path.name for path in Path('C:\files').glob('ot-*.txt') if f'ot-{date1}.txt' <= path.name <= f'ot-{date2}.txt']