尝试使用Popen运行命令时遇到以下错误,这里有什么问题?
cmd = "export COMMANDER_SERVER=commander.company.com"
Pipe = Popen(cmd, stdout=PIPE, stderr=PIPE)
(output, error) = Pipe.communicate()
错误: -
Traceback (most recent call last):
File "test_ectool.py", line 26, in <module>
main()
File "test_ectool.py", line 13, in main
Pipe = Popen(cmd, stdout=PIPE, stderr=PIPE)
File "/usr/lib/python2.7/subprocess.py", line 679, in __init__
errread, errwrite)
File "/usr/lib/python2.7/subprocess.py", line 1249, in _execute_child
raise child_exception
OSError: [Errno 2] No such file or directory
答案 0 :(得分:2)
list
。export
,因为它不是程序。这是一个内置的bash。以下是使用正确语义的命令的示例。
from subprocess import Popen,PIPE
cmd = "echo COMMANDER_SERVER=commander.company.com"
Pipe = Popen(cmd.split(), stdout=PIPE, stderr=PIPE)
(output, error) = Pipe.communicate()
print output
答案 1 :(得分:0)
args 应该是一系列程序参数,或者是一个字符串。
正如其他人所说,环境变量将不会被保存。为此,您需要使用os.environ['VARNAME'] = value
。如果您想使用其他bash内置函数,则必须将shell=True
作为参数传递给Popen
。