似たような投稿がたくさんありますが、答えが見つかりませんでした。
Gnu / Linuxでは、Python
モジュールsubprocess
を使用して、次のコードを使用して、サブプロセスで起動されたコマンドのstdout/sdterrを反復処理します。
class Shell:
"""
run a command and iterate over the stdout/stderr lines
"""
def __init__(self):
pass
def __call__(self,args,cwd='./'):
p = subprocess.Popen(args,
cwd=cwd,
stdout = subprocess.PIPE,
stderr = subprocess.STDOUT,
)
while True:
line = p.stdout.readline()
self.code = p.poll()
if line == '':
if self.code != None:
break
else:
continue
yield line
#example of use
args = ["./foo"]
shell = Shell()
for line in shell(args):
#do something with line
print line,
これは正常に機能します...実行されたコマンドがpython
たとえば`args= ['python'、'foo.py']の場合を除いて、出力はフラッシュされず、コマンドが終了したときにのみ出力されます。
解決策はありますか?