繁体   English   中英

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

[英]redirecting standard output to the calling process

我没有bash专家所以请耐心等待

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

先感谢您

如果你只是想捕捉你的python脚本的子进程的输出,最好的方式做到这一点是使用的subprocess模块:

import subprocess

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

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

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)

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM