防止Python外壳关闭

防止Python外壳关闭,python,Python,如果用户单击窗口的关闭按钮,如何防止Python shell/commandline/terminal窗口关闭?我试图捕获SystemExit异常并覆盖sys.exit(),但没有成功 我知道,我可以使用GUI工具包/框架(如PyQt)来实现这一点,但是导入它(并将其包含在我程序的最终二进制文件中)是没有选择的,因为它太大了。在一般情况下不可能做到这一点 终端窗口(一般来说)是一个独立于Python本身的进程(带有IPython的YMMV和其他类似的东西,但如果您在常规终端中运行常规Python

如果用户单击窗口的关闭按钮,如何防止Python shell/commandline/terminal窗口关闭?我试图捕获
SystemExit
异常并覆盖
sys.exit()
,但没有成功


我知道,我可以使用GUI工具包/框架(如
PyQt
)来实现这一点,但是导入它(并将其包含在我程序的最终二进制文件中)是没有选择的,因为它太大了。

在一般情况下不可能做到这一点

终端窗口(一般来说)是一个独立于Python本身的进程(带有IPython的YMMV和其他类似的东西,但如果您在常规终端中运行常规Python,则是如此)。当终端窗口决定离开时,不可能(在最合理的操作系统和窗口管理器下)阻止它这样做,因为它是一个完全不同的程序,正好显示您的输入和输出

但是,您可以在终端关闭后继续运行程序。终端仍将离开,但程序将在后台继续运行。在Unix系统上,这通常是通过使用捕获或忽略
SIGHUP
信号来实现的


根据您的操作系统和终端仿真器的选择,可以将终端配置为不关闭,也可以不关闭。默认情况下,Linux下的一些终端模拟器会在用户试图关闭终端时警告用户,终端下正在运行进程。这是高度依赖于平台的,无法从Python内部进行配置(可移植或根本无法配置)。

您计划使用哪个操作系统?@Ashafix Windows当时,一个非平台独立的解决方案是可以的。谢谢您,我是这样想的。但是PyQt如何防止窗户关闭呢?必须有任何解决方案…@linusg:在PyQt中,窗口由Python进程拥有,因此它可以控制用户单击关闭按钮时发生的事情。如果你在终端下运行,你不拥有或控制窗口,因此你无法阻止它消失。当然,如果用户决定通过任务管理器或您的系统的等效工具来终止流程,那么无论GUI与终端问题如何,您都无能为力。好吧,我不得不接受这一点。在结束之前,还有其他方法完成while循环吗?我发现了一些有趣的建议,但我不确定它们是否正是您想要的。谢谢您的努力!控制台窗口应该显示出来,这没有问题。我想做的一切就是完成一个while循环的执行,其中包含ftp上传。。。