Python sys.exit()帮助?

2024-03-29 11:34:02 发布

您现在位置:Python中文网/ 问答频道 /正文

我在Python中工作,试图执行一行代码,在它执行之后,我调用sys.exit()让脚本本身“退出”。但是,似乎sys.exit()是在它上面的代码行执行之前执行的。下面是我要实现的代码:

if something == True:
    self.redirect('http://www.google.com/')
    sys.exit()

脚本在重定向之前正在退出。我需要完成重定向,然后执行sys.exit()。由于正在实现的其他代码的性质,我无法使用sleep命令。有人能帮我解决这个问题吗?


Tags: 代码self脚本comtruehttpifwww
2条回答

尝试使用atexit模块注册一个清理函数,以便在调用sys.exit()之前运行。

要将重定向函数注册为清除函数,请执行以下操作:

import atexit
atexit.register(redirect, 'http://www.google.com')

注意:传递给重定向函数的参数包含在函数对象之后。这里不需要括号,因为我们传递给它的是函数对象,而不是实际调用函数。

另外,如果重定向方法不能正常工作,这对您也没有帮助。我将通过从Python解释器显式调用重定向方法来确保其工作正常。

self.redirect()中可能存在一些缓冲或异步。当人们执行一个print,然后是sys.exit()时,常常会遇到类似的问题:print输出被缓冲,然后进程在进程内输出缓冲区被刷新之前退出。

可以通过刷新缓冲区和/或等待异步任务完成来解决此问题。

不过,从魔法redirect在做什么这个问题上还不清楚。

相关问题 更多 >