@Chudo_10

Как создать exe файл?

У меня есть код, который с помощью tkinter-а получает входные данные и формирует отчет (резултьтат кода: создается один txt и один xls файл). Код работает, но когда я конвертирую его в exe файл (библиотека pyinstaller) файл создается, но не работает. В чем может быть проблема?

import tkinter as tk
def get_data():
    date1 = dateFrom.get()
    date2= dateTo.get()
    from pathlib import Path
    print("Начало даты")

    print("Конец даты")


    import os
    import pandas as pd

    mylist=[]
    for path in Path().glob('ot-*.log'):
        if f'ot-{date1}.log' <= path.name <= f'ot-{date2}.log':
            mylist.append(path.name)


    import re
    from datetime import datetime

    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)



    sessions = {}

    data = []

    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 (.+?) from .+ session=(.+?) .+", line)

        
            login_time = datetime.strptime(chunks.group(1), '%Y-%m-%d %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), '%Y-%m-%d %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, logout_time, session_time, session_id))
                data.append([username, login_time,logout_time, session_id, session_time ])  
                del sessions[session_id]

    df = pd.DataFrame(data, columns=['user_name', 'login', 'logout', 'session id', 'session_time' ])
    df.to_excel("test.xlsx")

win=tk.Tk()
dateFrom = tk.Entry(win)
dateFrom.grid(row=0,column=1)

dateTo=tk.Entry(win)
dateTo.grid(row=1,column=1)
tk.Button(win, text="Report", command=get_data).grid(row=2,column=1)
  • Вопрос задан
  • 192 просмотра
Решения вопроса 1
@Chudo_10 Автор вопроса
Надо было просто добавить в конец скрипта (в последнюю строку) tk.mainloop()
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
@galaxy
Кто ж его знает, в чем проблема. Может, оно входные файлы не находит, или выходные создать не получается.

Пока не проснулись телепаты, можете сами подебажить. Пишите лог (или выводите его в окно), ловите исключения.
Ответ написан
Комментировать
@maximsemin23
auto-py-to-exe, или cx_freeze
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы