首页 > 解决方案 > 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 文件,那么我会为错误的输入获得正确的回溯。

标签: pythonpyinstaller

解决方案


你可以使用try-exceptandinput()函数,这样当出现任何错误时,它会等待用户交互。

看这个例子——

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)

您会看到命令提示符不会立即关闭


推荐阅读