将标准输出重定向到调用进程

时间:2009-12-22 01:36:20

标签: python bash

我不是bash专家所以忍受我

我有一个python脚本启动其他进程,然后在stdout上发出日志消息 我将使用什么bash命令将这些子进程的stdout重定向回父进程的stdout(启动进程的python脚本)?

提前谢谢

2 个答案:

答案 0 :(得分:3)

如果您只想捕获python脚本中子进程的输出,最好的方法是使用subprocess模块:

import subprocess

p = subprocess.Popen(['/bin/ls', '-l'], stdout=subprocess.PIPE)
(out, _) = p.communicate()
print "Output:", out

答案 1 :(得分:1)

我假设您正在使用os.system("command")来执行脚本。此方法仅执行命令并为您提供程序的返回值,而不是它的标准输出。您需要的是subprocess模块。例如:

import subprocess

proc = subprocess.Popen(['command', 'option 1', 'option 2'], stdout=subprocess.PIPE)
output = proc.communicate()[0] #for stdout. Use proc.communicate[1] for stderr

在查看您的评论时,您的解决方案很简单:

subprocess.Popen('command option 1 option 2', shell=True)

注意:命令需要作为字符串传递。序列不起作用。