@Chudo_10

Как часть имени файла записать в тот же файл?

Я анализирую .log файлы по времени которые прописываюются каждую минуту в новой строке. Пример:
00.01 AM some text
00.02 AM some text
...
11.59 PM some text
Оказалось так что мне для анализа потребовалось еще и дата каждой строчки, но даты в этих строчках нет. Дата есть в самом названии файла. Каждый день создается новый файл. И файлы называются так: "doc-2020-12-15.log", "doc-2020-12-16.log" и т.д.
Я задаю дату с и дату по и получаю все названия файлов которые мне нужны в кокретном временном промежутке и объеденяю их в один файл
from pathlib import Path
date1= input()
date2=input()
mylist=[]
for path in Path().glob('ot-*.log'):
    if f'ot-{date1}.log' <= path.name <= f'ot-{date2}.log':
        mylist.append(path.name)
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)

Мне нужен примерно следующий результат:
2020-12-15 00.01 AM some text
2020-12-15 00.02 AM some text
...
2020-12-15 11.59 PM some text
И так для каждого файла указанного в этом промежутке
Вопрос - Как записать к началу каждой строчке файла дату из имени соответствующего файла?
  • Вопрос задан
  • 55 просмотров
Решения вопроса 1
SoreMix
@SoreMix Куратор тега Python
yellow
Как записать к началу каждой строчке файла дату из имени соответствующего файла

Эээ, взять дату и записать ее в файл перед этой строкой?

with open('final.txt', 'w', encoding='utf-8') as outfile:
    for fname in mylist:
        file_date = fname.replace('ot-', '').replace('.log', '')
        with open(fname, encoding='utf-8') as infile:
            for line in infile:
                outfile.write(file_date + ' ' + line)
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
trapwalker
@trapwalker Куратор тега Python
Программист, энтузиаст
Вы можете вытащить дату из имени файла: fname[3:].rsplit('.', 1)[0]
И добавить эту строку в начало каждой при записи.
Осторожнее, ваш метод равнения интервалов будет работать корректно только в случае такого формата даты в имени файла, у которого сначала идет год потом месяц, потом день, а месяц и день выравнены нулями до двух знаков.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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