python - 为什么我的独立程序退出而不给我机会阅读结果(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 文件中运行良好。
解决方案
我已经看到了您的其他问题,并尝试对此问题的解决方案进行更多解释:
在运行代码、程序或其他任何东西时,该代码可能会在某个地方结束,不再需要做任何事情。
这就是您的操作系统(Windows、Linux 等)刚刚退出程序的地方。您可能期望控制台保持打开状态,以便您可以读取输出,对吧?
那么为什么这通常有效但通常无效呢?
从已经存在的命令窗口(例如 cmd.exe)调用您的代码时,控制台(它本身就是一个程序)尚未完成,并且在运行您的程序后不会关闭。这就是您可以从自己的程序中读取打印输出的地方。
当您从其他地方调用您的程序时,它只是为此目的打开一个控制台,并且它以这种方式配置,在执行您的程序后它不会保持打开状态。所以当你的代码被执行时,它会在控制台上打印一些东西;但在完成后,控制台也会立即关闭。
这就是解决方案input("Press Enter to exit")
发挥作用的地方。input()
是一个等待用户输入的函数;所以它无限地等待你点击进入。这意味着,您的程序还没有完成。这使您有时间阅读要阅读的输出。
推荐阅读
- azure - 添加入站nat规则时,我可以在azure powershell中设置目标VM吗?
- hyperledger-fabric - Hyperledger Fabric Go SDK:如何解析块
- vba - EXCEL VBA中CURL的令牌认证
- ffmpeg - FFMpeg - 如何在帧的区域上应用场景选择过滤器
- node.js - 在 express/mongo API 的 mongo 模型中创建列表
- python - Turtle bgpic() 不显示图像并给我这些错误消息......?
- cuda - C 中的 CUDA:如何使用 cudaMemcpyAsync 修复错误 11
- typo3 - TYPO3 流体 - 退出 for 循环
- angular - 如何用 agm-core 绘制 agm-polygon?
- windows - 如果在文本 txt 文件的列表中找不到文件,则 CMD 批处理文件删除文件