将标准输出重定向到调用进程
我不是bash方面的专家,所以请多多包涵。
我有一个Python脚本,它会启动其他进程,这些进程会在标准输出(stdout)上输出日志信息。
我应该使用什么bash命令来把这些子进程的标准输出重新导向回父进程的标准输出(也就是启动这些进程的Python脚本)呢?
提前谢谢你!
2 个回答
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)
注意:命令需要作为字符串传递,不能用其他形式。
3
如果你只是想在你的 Python 脚本中获取子进程的输出,最好的方法就是使用 subprocess
模块。
import subprocess
p = subprocess.Popen(['/bin/ls', '-l'], stdout=subprocess.PIPE)
(out, _) = p.communicate()
print "Output:", out