python - windows 命令提示符在运行使用 pyinstaller 转换为 .exe 的 python 脚本后消失
问题描述
我正在使用python3.7
我写了一个脚本,它需要一些输入(例如 a=input("enter a value")
如果我转到它的路径并在命令提示符下运行它,它运行顺利。我也可以提供输入并运行。如果我输入错误,则显示错误或异常(回溯)
所以我使用 pyinstaller 将其转换为 .exe
当我运行 .exe 时,它按预期要求输入,它运行并消失,我看不到任何输出。如果我输入错误,它会突然消失而没有显示任何回溯
我在 stackoverflow 和 google 上阅读了很多关于这个的问题,所以我在最后添加了一个输入语句,让程序在退出之前等待,
但它在输入错误的情况下不起作用,或者如果我在某些情况下使用sys.exit("test failed")它就消失了,如何解决并保持 cmd 窗口打开?
为例如添加脚本:
import sys
x = int(input(" enter a number :"))
y = int(input(" enter a number :"))
if x>100 or y > 100 :
sys.exit("ERROR :value out of range")
z=x+y;
print(z)
input('press enter to exit')
如果输入小于 100 且整数,则脚本(.exe 文件)运行顺利,我收到消息“按 Enter 退出”
但是如果输入数字大于 100 或者如果我在输入中输入“字符串或浮点数”,则 cmd 窗口会消失而不显示任何回溯
而如果我从 cmd 运行 py 文件,那么我会为错误的输入获得正确的回溯。
解决方案
你可以使用try-except
andinput()
函数,这样当出现任何错误时,它会等待用户交互。
看这个例子——
a = input('Please enter a number: ')
try:
int(a) # Converts into a integer type
except ValueError as v:
# This will run when it cannot be converted or if there is any error
print(v) # Shows the error
input() # Waits for user input before closing
对于您的例如代码,试试这个 -
import sys
try:
x = int(input(" enter a number :"))
y = int(input(" enter a number :"))
except ValueError as v:
print(v)
input('Press any key to exit ')
sys.exit()
if x>100 or y > 100 :
try:
sys.exit("ERROR :value out of range")
except SystemExit as s:
print(s)
input('Press any key to exit ')
sys.exit()
z=x+y
print(z)
您会看到命令提示符不会立即关闭
推荐阅读
- ios - Google Analytics iOS SDK 导致内存泄漏
- javascript - jQuery提交时如何处理错误信息
- tfs - 抑制来自 tfs 的时间戳
- python-3.x - 在一个类中只运行一次函数 - Python
- c# - ASP.NET:在 DataTable 中显示“system.web.ui.webcontrols.dropdownlist”而不是实际的下拉列表
- libgdx - 如何避免Stage中的ScollPane和GestureListerner同时抛出
- excel - 使用 MS Excel 驱动程序连接 odbc 后打开 excel 文件时出错
- go - 为什么 map[]interface{} 不采用 map[]SpecificInterface
- java - 如果使用 Android 后台服务,Flutter 会卡在“等待天文台端口可用”
- java - camunda 拦截业务流程执行