首页 > 解决方案 > 将子进程标准输出流式传输到 jupyter(bash 和 python)

问题描述

我在 python 中运行一些 bash 脚本。为此,我正在使用

import subprocess

cm=['bash','/path/to/mybash.sh','-f','flag_val']
p=subprocess.Popen(cm, stdout=subprocess.PIPE, stderr=subprocess.STDOUT,
   universal_newlines=True, bufsize=5, close_fds=True)

我的 bash 脚本正在将 stdout 和 stderr 连同所有日志一起写入文件。

我在jupyter中运行它,我想让python在继续之前等待完整的bash脚本完成,但是就像现在一样,就好像它一旦通过p=...它就简单地继续而不是等待 bash 完成。但是,如果我不保留close_fds=True,Popen 会一直挂在脚本完成所需的时间之后。

此外,我还想即时查看 jupyter 内部进程的输出同时还希望将 bash 写入 stdout 和 stderr。

你认为我能做些什么来解决这些问题?

标签: pythonbashsubprocessstdoutstderr

解决方案


推荐阅读