Python sys.exit()有帮助吗?

时间:2011-09-23 23:09:31

标签: python

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

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

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

2 个答案:

答案 0 :(得分:7)

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

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

但是,从redirect正在做什么的问题不清楚。

答案 1 :(得分:1)

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

将重定向功能注册为清理功能:

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

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

此外,如果您的重定向方法无法正常工作,这也无济于事。我将通过从Python解释器显式调用它来确保您的重定向方法正常工作。