Python OSError:[Errno 2]

我有以下代码,试图在Linux中启动下面的每个“命令”。模块尝试保持2个命令中的每一个运行,如果或者由于任何原因应该崩溃。

#!/usr/bin/env python
import subprocess

commands = [ ["screen -dmS RealmD top"], ["screen -DmS RealmD top -d 5"] ]
programs = [ subprocess.Popen(c) for c in commands ]
while True:
    for i in range(len(programs)):
        if programs[i].returncode is None:
            continue # still running
        else:
            # restart this one
            programs[i]= subprocess.Popen(commands[i])
        time.sleep(1.0)

执行代码时抛出以下异常:

Traceback (most recent call last):
  File "./marp.py", line 82, in <module>
    programs = [ subprocess.Popen(c) for c in commands ]
  File "/usr/lib/python2.6/subprocess.py", line 595, in __init__
    errread, errwrite)
  File "/usr/lib/python2.6/subprocess.py", line 1092, in _execute_child
    raise child_exception
OSError: [Errno 2] No such file or directory

我想我缺少一些明显的东西,任何人都可以看到上面的代码有什么问题?

使用[“screen”,“-dmS”,“RealmD”,“top”]而不是[“screen -dmS RealmD top”]。

也许也可以使用完整的路径来屏幕。

如果程序仍然找不到你也可以通过你的shell与shell = True,但然后你需要引用和转义你的参数等。如果你打算这样做,请务必阅读information in the docs

http://stackoverflow.com/questions/901982/python-oserror-errno-2

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:Python OSError:[Errno 2]