Popen
只能执行一个命令或shell脚本。您可以使用
;
要分离不同的命令:
proc = Popen('set variable=abc;echo %variable%', shell=True)
或者您可以实际使用多行字符串:
>>> from subprocess import call
>>> call('''echo 1
... echo 2
... ''', shell=True)
1
2
0
决赛
0
是进程的返回代码
这个
communicate
方法用于写入进程的stdin。在您的情况下,进程在运行后立即结束
set variable
所以我要打电话给
沟通
什么都不做。
你可以生成一个外壳然后使用
沟通
要编写命令:
>>> proc = Popen(['sh'], stdin=PIPE, stdout=PIPE, stderr=PIPE)
>>> proc.communicate('echo 1; echo 2\n')
('1\n2\n', '')
注意
沟通
也会在完成后关闭流,因此不能多次调用它。如果你想要一个互动会话,你可以直接写信给
proc.stdin
从中读取
proc.stdout
.
顺便说一下:您可以指定
env
参数
波彭
所以
视情况而定
您可能需要这样做:
proc = Popen(['echo', '%variable%'], env={'variable': 'abc'})
显然,这将使用
echo
可执行,而不是shell内置,但它避免使用
shell=True
.