如何用无限循环包装现有脚本?

时间:2012-10-29 09:21:38

标签: python loops exit

我的脚本有很多sys.exit()和raw_input()命令。 我想用无限循环包装它。 forever.py正在从Windows空闲运行。 像下面的代码,但它不起作用。 在一台机器python控制台窗口闪烁(无限循环启动进程python,它似乎合法),但我没有输出。 我能做得更好吗?

模块to_be_wrap.py:

import sys

def main():
    print('start')
    raw_input('any key')
    sys.exit(0)
    print('end')

模块forever.py:

import subprocess as subp
def forever():
    while 1:
        try:
            cmd = ['python', 'to_be_wrap.py']
            print subp.check_output(cmd)
        except Exception as e:
            print e
forever()

2 个答案:

答案 0 :(得分:2)

这应该像预期的那样工作。请纠正这两件事:

  1. 如果您希望打印'end',请将其放在sys.exit(0)声明
  2. 之前
  3. 模块to_be_wrap.py中没有调用函数main()。在文件末尾添加语句main()

答案 1 :(得分:0)

您似乎正在创建类似于REPL(read-eval-print循环)的东西,尽管您的main()方法现在似乎没有做任何有用的事情。

This blog post描述了一种相当严格的方法。 This gist(上述博客文章的一部分)显示了REPL的“核心”,但是将read和eval逻辑的实现留给了你。