我需要每5分钟调用一个脚本(test.py),所以我使用了另一个脚本timer.py和以下代码:
import time
while(1==1):
execfile("test.py")
time.sleep(300)
这可以正常工作。 但经过几次迭代后它停止了工作。调试后,我发现test.py中有一个流程,它使用以下代码:
sys.exit()
因此,这会导致test.py和timer.py停止。 应该做什么更改,以便继续timer.py,因为我希望sys.exit()只退出test.py而不是timer.py
答案 0 :(得分:7)
sys.exit()
除了提升SystemExit
(一个BaseException
子类)之外没有做更多的事情,这可以像任何例外一样被捕获,例如:
import time
while True:
try:
execfile("test.py")
except SystemExit:
print("ignoring SystemExit")
finally:
time.sleep(300)
答案 1 :(得分:0)
试试这个:
import time
import os
while True:
os.system("python test.py") # if you are not running script from same directory then mention complete path to the file
time.sleep(300)
答案 2 :(得分:0)
你应该可以使用:
try:
# Your call here
except BaseException as ex:
print("This should be a possible sys.exit()")
查看the documentation了解详情。
答案 3 :(得分:0)
import subprocess
import time
while(1==1):
subprocess.call(['python', './test.py'])
time.sleep(300)
如果test.py
文件在第一行有一个shebang评论,你甚至可以删除 python 一词:
#!/usr/bin/env python
这不完全相同,因为它将启动一个新的解释器,但结果将是类似的。