对,你不能用communiate之类的函数,必须自己用Popen的stdin/stdout属性读写并处理。基本就是这样:
p = Popen('/bin/bash', stdin=PIPE, stdout=PIPE)
commands = [] # A list of commands
for cmd in commands:
p.stdin.write(cmd)
p.stdin.write('echo $$$$\n')
for row in p.stdout:
if row == '$$$$':
break
else:
'''Handle output here.'''
因为每条命令的输出和结束时间无法控制,你只能通过插入一个特殊字符串的办法来判断
上条命令是否结束。
【 在 Machael 的大作中提到: 】
: 这就是我想做的,但popen2已经被废弃了,官方文档里说替代的是subprocess.popen()
: 我用了官方的
: p = Popen(cmd, shell=True, bufsize=bufsize,
: ...................
--
修改:Madlee FROM 222.67.194.*
FROM 222.67.194.*