【发布时间】:2014-01-15 14:47:54
【问题描述】:
我正在尝试从 Python 程序执行 shell 脚本。我没有使用subprocess.call,而是使用subprocess.Popen,因为我想在变量中执行shell脚本时查看shell脚本的输出和错误。
#!/usr/bin/python
import subprocess
import json
import socket
import os
jsonStr = '{"script":"#!/bin/bash\\necho Hello world\\n"}'
j = json.loads(jsonStr)
shell_script = j['script']
print shell_script
print "start"
proc = subprocess.Popen(shell_script, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
(stdout, stderr) = proc.communicate()
if stderr:
print "Shell script gave some error"
print stderr
else:
print stdout
print "end" # Shell script ran fine.
但是每当我运行上面的代码时,我总是会遇到这样的错误 -
Traceback (most recent call last):
File "hello.py", line 29, in <module>
proc = subprocess.Popen(shell_script, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
File "/usr/lib/python2.7/subprocess.py", line 711, in __init__
errread, errwrite)
File "/usr/lib/python2.7/subprocess.py", line 1308, in _execute_child
raise child_exception
OSError: [Errno 2] No such file or directory
知道我在这里做错了什么吗?
【问题讨论】: