首页 > 解决方案 > 为什么我的独立程序退出而不给我机会阅读结果(python)?

问题描述

我是 python 以及这个网站的完整初学者。

背景:我尝试编写一个随机密码生成器,允许用户输入密码的长度以及用户想要多少个密码。

当我在 pharm 中运行程序时,一切正常。所以我将脚本转换为 .exe 文件。它不会立即崩溃,它仍然允许用户输入值,但是一旦用户输入值,它就会崩溃。

我尝试使用 youtube 教程中的 pyinstaller 将脚本“正确”转换为 .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 文件中运行良好。

标签: pythonwindows

解决方案


我已经看到了您的其他问题,并尝试对此问题的解决方案进行更多解释:

在运行代码、程序或其他任何东西时,该代码可能会在某个地方结束,不再需要做任何事情。

这就是您的操作系统(Windows、Linux 等)刚刚退出程序的地方。您可能期望控制台保持打开状态,以便您可以读取输出,对吧?

那么为什么这通常有效但通常无效呢?

从已经存在的命令窗口(例如 cmd.exe)调用您的代码时,控制台(它本身就是一个程序)尚未完成,并且在运行您的程序后不会关闭。这就是您可以从自己的程序中读取打印输出的地方。

当您从其他地方调用您的程序时,它只是为此目的打开一个控制台,并且它以这种方式配置,在执行您的程序后它不会保持打开状态。所以当你的代码被执行时,它会在控制台上打印一些东西;但在完成后,控制台也会立即关闭。

这就是解决方案input("Press Enter to exit")发挥作用的地方。input()是一个等待用户输入的函数;所以它无限地等待你点击进入。这意味着,您的程序还没有完成。这使您有时间阅读要阅读的输出。


推荐阅读