Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/326.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使Python可执行文件在出现错误时暂停?_Python - Fatal编程技术网

如何使Python可执行文件在出现错误时暂停?

如何使Python可执行文件在出现错误时暂停?,python,Python,因此,我知道我可以使用pyinstaller使Python可执行 但是,每次它引发错误时,它都会立即结束程序,因此我无法找到错误是什么 我知道我可能可以用time.sleep(30000)来阻止它 但是,如果代码在遇到time.sleep(30000)之前出现错误,它将立即关闭 总而言之,如何让它不关机,这样我就可以知道错误在哪里了?不要只是双击文件,而是从命令行运行它。程序自动创建的终端窗口也将在程序结束时自动关闭,但如果您自己打开终端并从命令行运行程序,它将不会触及打开的终端,您可以读取错误

因此,我知道我可以使用
pyinstaller
使Python可执行

但是,每次它引发错误时,它都会立即结束程序,因此我无法找到错误是什么

我知道我可能可以用
time.sleep(30000)
来阻止它

但是,如果代码在遇到
time.sleep(30000)
之前出现错误,它将立即关闭


总而言之,如何让它不关机,这样我就可以知道错误在哪里了?

不要只是双击文件,而是从命令行运行它。程序自动创建的终端窗口也将在程序结束时自动关闭,但如果您自己打开终端并从命令行运行程序,它将不会触及打开的终端,您可以读取错误。

您可以使用
尝试,但不必像Mars Lee所说的那样执行操作

print("Test 1");

在一定数量的行之后。

如果只需双击即可运行可执行文件,请尝试从控制台运行它。例如,在Windows中:

在cmd中,运行

cd可执行文件路径
myexecutable.exe

更好的方法是引入logger,以便其他实现了日志记录的模块可以写入文件

此外,您还可以将代码放入try-except块:

try:
    #my_code_here
    print('Here is where the exception is')
except Exception as e:
    print('Unexpected error:' + str(e))

根据您的描述,听起来您正在运行一个控制台程序(即带有可见控制台窗口的程序)

如果是,您有两个选择:

  • 在控制台窗口中运行它。这只需要运行命令提示符或终端仿真器(随计算机提供),
    cd
    ing进入包含程序的目录,然后通过输入程序名来运行它。当程序退出时(例如由于错误),将打印回溯,并返回提示
  • 您可以在整个程序周围添加一个
    try
    /
    ,以捕获任何错误并报告它们。例如:

    try:
        main()
    except Exception:
        import traceback
        traceback.print_exc()
        raw_input("Program crashed; press Enter to exit")
    

  • 下面是另一种方法,使用Python的异常挂钩:

    import sys
    
    def myexcepthook(type, value, traceback, oldhook=sys.excepthook):
        oldhook(type, value, traceback)
        raw_input("Press RETURN. ")    # use input() in Python 3.x
    
    sys.excepthook = myexcepthook
    

    每当Python想要打印异常时,就会调用异常挂钩。在这种情况下,我们调用以前安装的异常挂钩(打印异常),然后等待用户按Return。

    使用
    try except
    捕获异常error@haifzhan-OP希望看到错误,而不是抑制错误。try/except不抑制错误。那么您的意思是我可以在try:下添加整个代码?我知道,除了以前,我会尝试。但我不确定我是否可以这样做——在try下添加完整的代码(可能1000行)。我喜欢你的控制台答案,它可以完美地工作!非常感谢。是的,您可以将整个代码置于try-except下,并使其捕获任何异常。您可以将异常打印到控制台或放入日志文件,也可以同时执行这两项操作。谢谢您的回答。但我不明白你的代码是怎么工作的。你能给我解释一下吗?谢谢:)加了一点解释;如果你需要更多,请告诉我。