Python脚本转exe后控制台自动关闭,求技术解决方案
GPA计算程序EXE运行后自动关闭的问题
原Python代码
score = [] percent = [] add = [] print("Enter Grade") # 获取用户输入 def multi_input(): try: while True: data=input() if not data: break yield data except KeyboardInterrupt: return data = list(multi_input()) # 将数据筛选到percent和score列表 for i in range(3, len(data),4): data[i] = data[i].split('\t') try: percent.append(data[i][3]) score.append(data[i][4]) except IndexError: result = 0 # 移除未评分的项 percent = [value for value in percent if value != ''] score = [value for value in score if value != ''] # 处理百分比数据 for i in range(len(percent)): try: percent[i] = percent[i].replace('%', '') percent[i] = float(percent[i]) except ZeroDivisionError: result = 0 # 处理分数数据 for i in range(len(score)): score[i] = score[i].split('/') for j in range(len(score[i])): score[i][j] = float(score[i][j]) try: score[i] = score[i][0]/score[i][1]*100 except ZeroDivisionError: result = 0 # 输出已评分作业数量 print() print("graded assignments: ", len(score)) # 计算GPA for i in range(len(score)): add.append(score[i]*percent[i]/100) print(f"{sum(add)/sum(percent)*100:05.2f}")
问题描述
上述代码在PyCharm中可正常运行:输入指定数据并按两次回车后,能输出GPA结果。但使用PyInstaller或AutoPyToExe将其转换为exe文件后,控制台执行完毕会直接关闭,无法查看计算结果。
原因分析
这是控制台程序的常见问题:PyCharm的运行环境会在程序结束后保持控制台窗口打开,而独立的EXE程序执行完所有代码逻辑后,会立即终止进程并关闭控制台窗口,导致用户来不及查看输出结果。
解决办法
方法1:在代码末尾添加暂停逻辑
在代码最后一行(打印GPA结果之后)添加等待用户输入的代码,让程序在用户操作后再退出:
# 等待用户输入,防止窗口自动关闭 input("按任意键退出...")
如果需要兼容Windows系统的传统“按任意键继续”提示,也可以使用os模块(需先导入os):
import os os.system("pause")
方法2:从命令提示符手动运行EXE
打开Windows命令提示符(CMD),切换到EXE所在的文件夹,输入EXE文件名并回车运行。这种方式下,程序执行完毕后控制台窗口不会自动关闭,你可以直接查看输出结果。
方法3:打包时调整PyInstaller参数
确保打包时使用控制台模式(默认就是此模式),如果之前误选了窗口模式(--windowed或--noconsole参数),需要去掉这些参数,重新打包。
内容的提问来源于stack exchange,提问作者Kim Teo
相关产品推荐
相关产品推荐

