У меня есть файл с текстом и я оттуда выгружаю логины пользователей. и мне эти логины нужно записать в excel файл, но никак не получается он записывает последнюю
10farid10, так и не нужно знать. Список формируется загрузкой из файла (насколько я понял описание), потом он используется для создания DF, как написано в примере. Или опишите, каков процесс загрузки.
o5a, Я читаю текст и вывожу от туда нужные мне элементы. Мне нужен примерно следующий результат:
Мне нужно данные сначала в список загрузить в этом случаее, а потом в эксель? Правильно ли я понял?
import re
import pandas as pd
from datetime import datetime
sessions = {}
with open('final.txt', 'r', encoding='utf-8') as f:
log = f.readlines()
for line in log:
if 'Login successful' in line:
chunks = re.search(r"(.+?) Login successful from user (.+?) .+ session=(.+?) .+", line)
# Возможно придется подкорректировать преобразование времени, если я не угадал с форматом
login_time = datetime.strptime(chunks.group(1), '%I:%M:%S %p')
sessions[chunks.group(3)] = {'login_time': login_time, 'username': chunks.group(2)}
elif 'Closing session' in line:
chunks = re.search(r'(.+?) Closing session.+session=(.+?) .+', line)
logout_time = datetime.strptime(chunks.group(1), '%I:%M:%S %p')
session_id = chunks.group(2)
if session_id not in sessions:
print('Сессия {} закрыта, нет данных о входе'.format(session_id))
else:
login_time = sessions[session_id]['login_time']
username = sessions[session_id]['username']
session_time = logout_time - login_time
print ("Пользователь {} зашел в {} под id {}".format(username, login_time, session_id))
print ("Пользователь {} вышел в {} под id {}".format(username, logout_time, session_id))
d = {'user': [username], 'login': [login_time], 'logout': [logout_time], 'session_id':[session_id]}
df = pd.DataFrame(data=d)
del sessions[session_id]
# определяем список (массив) данных для заполнения построчно
data = []
for line in log:
# парсим лог построчно, заполняя нужные значения (user_name, login_time и т.п.)
# когда все значения определены, заносим строку в наш список данных
data.append([user_name, login_time, ... ])
# после окончания цикла у нас готовый вложенный список со всеми данными, из которого мы можем создать DF
df = pd.DataFrame(data, columns=['user_name', 'login_time', и т.д. все наши колонки, которые заносили в data])