Python файл работает в VSCode, но автоматически падает при запуске в качестве исполняемого файла - PullRequest
0 голосов
/ 30 марта 2020

Начинающий здесь

Я работаю над программой, которая может рассчитать совокупную ошибку между расчетным временем печати 3D-принтера (через Cura Slicer) и фактическим временем. Я хочу запустить программу как исполняемый файл, используя pyinstaller, но командная строка, которую исполняемый файл открывает автоматически, закрывается. Мне удалось запустить исполняемый файл и закрыть окно с помощью input("Press any key to stop the program: "), но после того, как я реализовал try: error_list=[]...except ZeroDivisionError: print("Sorry, there's nothing in this file")., окно терминала закрывается в момент его запуска. Имейте в виду, я тестировал код в VSCode, и input() работает как положено, но в терминале как исполняемый файл он автоматически закрывается.

Почему программа прекрасно работает в VSCode, но автоматически закрывается при запуске в качестве исполняемого файла? Любая помощь приветствуется!

Для установки исполняемого файла в cmd я использую pyinstaller .\CuraTimeError.py

    def getError():
        f=open("errors.txt","r")
        data=f.read()
        try:  
            error_list=[]
            interations=iter(data)
            for char in range(len(data)):
                try:
                    thing=next(interations)
                except(StopIteration):
                    continue
                if thing == "*":
                    error=float(next(interations)+next(interations)+next(interations)+next(interations))
                    error_list.append(error)
            print("The current total error is: " +str(sum(error_list)/len(error_list)))
            f.close()
        except ZeroDivisionError:
            print("Sorry, there's nothing in this file")

    getError()
    numberOfCases=int(input("How many tests are you inputting? "))
    if numberOfCases != 0:
        print("NOTE: Time follows 24-hour notation")
        for i in range(numberOfCases):
            print("Please enter case number "+str(i+1))
            f=open("errors.txt","a")
            curaTime=input("Cura estimated time: ")
            startTime=input("Start time: ")
            endTime=input("End time: ")
            if int(endTime)<int(startTime):
                endTime = str(int(endTime)+2400)
            actualTime=60*(int(endTime[0:2])-int(startTime[0:2]))+(int(endTime[2:4])-int(startTime[2:4]))
            estimatedTime= 60*(int(curaTime[0:2]))+int(curaTime[2:4])
                    error=(actualTime-estimatedTime)/(estimatedTime)+1
                    f.write(curaTime+","+startTime+","+endTime+",*"+str(round(error,2))+"\n")
                    f.close()
    getError()
    input("Press any key to stop the program: ")

1 Ответ

0 голосов
/ 01 апреля 2020

Я не смог найти прямого решения этой проблемы, поэтому обходной путь должен был устранить необходимость в try...except ZeroDivisionError для функции getError() путем добавления строки известных данных в файл errors.txt. Таким образом, исполняемый файл не обрабатывает sh при попытке выполнить эту попытку, кроме.

...