正常运行是依次打印出处理的文件,遇到错误窗口就自动消失了,怎么让窗口及提示的错误信息保留下来?谢谢
1
LZSZ 2021-03-05 21:19:08 +08:00
最后加上 os.system("pause")
|
2
jim9606 2021-03-05 22:10:01 +08:00
用 try-catch 包住整个主函数,捕捉所有异常后 input("Press any key...")
|
3
IgniteWhite 2021-03-05 22:18:52 +08:00 via iPhone
@jim9606 哈哈和我一样
|
4
CallMeReznov 2021-03-05 23:02:38 +08:00
python test.py >test.log
直接重定向到文件,想怎么看都可以. |
5
zictos 2021-03-05 23:56:14 +08:00
方法一:
先打开 cmd,再用 python test.py 这样的命令运行 py 文件就可以停留界面,双击不行。 方法二(只需要在每个 py 文件前面加上 10 行代码即可,代码中的****替换成四空格缩进): import time, os import win32gui as w title = w.GetWindowText(w.GetForegroundWindow()) if 'cmd' in title: ****pass else: ****os.system('title "cmd"') ****filepath = os.path.realpath(__file__) ****cmd = 'cmd /k "python %s"' % filepath ****os.system(cmd) #正式代码开始 for i in range(10): ****print(i) |
6
ysc3839 2021-03-06 02:43:40 +08:00 via Android
@zictos 你这段代码问题挺多的,要读取和修改控制台的标题的话,用 GetConsoleTitle 和 SetConsoleTitle 即可。用 GetForegroundWindow 的话,遇到 Windows Terminal 等终端的话获取的就不是当前控制台的标题了。
另外要判断是否是通过 cmd 运行的话,我会选择通过父进程名来判断。 |
7
zictos 2021-03-06 10:48:26 +08:00
@ysc3839 #6
只是省时间随便写一下,给楼主一个思路,达到能双击运行并且不退出的效果,暂时没考虑那么多。如果有问题可以多加几个判断。 不过获取父进程的名称确实是个好办法,这样就只需要在 py 文件的前面加上下面两行代码就可以了: import os, psutil; pp = psutil.Process(os.getppid()).name(); if pp != 'cmd.exe': os.system('cmd /k "python %s"' % os.path.realpath(__file__)) |
8
pkookp8 2021-03-06 11:18:38 +08:00 via Android
最外层 try catch
然后 sleep10000000 或者 1-2 楼的方法 |