0

我有许多 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')

模块永远.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()
4

2 回答 2

2

这应该像预期的那样工作。只需纠正以下两点:

  1. 如果要打印“结束”,请将其放在sys.exit(0)语句之前
  2. 模块 to_be_wrap.py中没有调用该函数main()main()在文件末尾添加语句。
于 2012-10-29T09:39:02.517 回答
0

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

这篇博文描述了一种相当严格的方法。这个要点(上述博客文章的一部分)展示了 REPL 的“核心”,但将 read 和 eval 逻辑的实现留给了您。

于 2012-10-29T09:33:10.947 回答