我有一个像这样执行subprocess.Popen
的python程序;
process = subprocess.Popen(stand_alone_command, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
out, err = process.communicate()
print "out: ", out
print "err: ", err
如果我的stand_alone_command
可以永远运行,我如何才能将stand_alone_command
扔到STDOUT和STDERR上,以便我可以对其进行记录。
答案 0 :(得分:-1)
请尝试从标准输出中读取内容,而不要调用诸如{.1的communicate()
。
import subprocess
sac = ['tail', '-f', '/var/log/syslog']
process = subprocess.Popen(sac, shell=False, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
while 1:
line = process.stdout.readline()
if line:
print(line)
我认为您需要设置shell=False
,但是我在Linux和Windows上有所不同。