Почему моя отдельная программа завершает работу, не давая мне возможности прочитать результаты (python)? - PullRequest
0 голосов
/ 25 сентября 2019

Я полный новичок в Python, а также в этом веб-сайте.

Справочная информация: я попытался запрограммировать генератор случайных паролей, который позволяет пользователю вводить длину пароля и количество паролей пользователяхочет.

Все отлично работает, когда я запускаю программу в pharm.Поэтому я преобразовал скрипт в файл .exe.Он не падает мгновенно, он по-прежнему позволяет пользователю вводить значения, но как только пользователь вводит значения, происходит сбой.

Я попытался использовать pyinstaller из учебных пособий по youtube, чтобы «правильно» преобразовать скрипт в .exe, но тот же результат все еще происходит.(Ранее я просто копировал и вставлял свой скрипт в блокнот и называл этот блокнот в терминах .py и запускал его.)

Вот мои коды:

import random
import sys

chars = "abcdefghijklnmopqrstuvwxyzABCDEFGHIJKLNMOPQRSTUVWXYZ0123456789!@#$%^&*+="
try:
    length_password = int(input("Enter the length of your password: "))
    how_many = int(input("Enter how many passwords you want: "))
except:
    print("Invalid input (numbers only!)")
    sys.exit()


def length_function(length):
    password = ""
    for number_times in range(0, length_password):
        password = password + random.choice(chars)
    return password


print("Here are your passwords: ")


number_times1 = 1
while number_times1 <= how_many:
    print(length_function(length_password))
    number_times1 = number_times1 + 1

Как я упоминал ранее, он хорошо работает в pycharm, но не в файле .exe.

1 Ответ

1 голос
/ 27 сентября 2019

Я видел ваш другой вопрос и попытался объяснить больше о решении этой проблемы:

При запуске кода, программы или чего-то еще этот код может заканчиваться где-то, где ничего не нужно делатьбольше.

Это точка, в которой ваша операционная система (Windows, Linux и т. д.) просто выходит из программы.Вы можете ожидать, что консоль остается открытой, чтобы вы могли читать выходные данные, верно?

Так почему это часто работает, но часто нет?

При вызове кода из ужеВ существующем окне команд (например, cmd.exe) консоль (которая является самой программой) не завершена и не закроется после запуска вашей программы.В этот момент вы можете прочитать распечатанный вывод из вашей собственной программы.

Когда вы вызываете вашу программу откуда-то еще, она открывает консоль только для этой цели, и она настроена таким образом, что она не 'не оставайтесь открытыми после выполнения вашей программы.Поэтому, когда ваш код выполняется, он печатает что-то на консоли;но сразу после того, как все готово и консоль закрывается, тоже.

Вот где решение input("Press Enter to exit") вступает в игру.input() - это функция, которая ожидает ввода пользователя;так что он ждет тебя бесконечно, чтобы войти.Это означает, что ваша программа не завершена.Это дает вам время, когда вы читаете вывод, который хотите прочитать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...