将 subprocess.run 输出重定向到 jupyter notebook 的

Posted

技术标签:

【中文标题】将 subprocess.run 输出重定向到 jupyter notebook 的【英文标题】:Redirect subprocess.run output to jupyter notebook's 【发布时间】:2017-11-28 08:41:21 【问题描述】:

我在 jupyter notebook 中使用新的(从 3.5 开始)subprocess.run 命令。

通常,在 python 控制台中运行此代码,我会得到打印到控制台的 .run() 调用的输出,但对于 Jupyter 笔记本来说,情况并非如此。

如何将 .run() 输出重定向到 Jupyter?

注意考虑一个运行输出的命令,在几秒钟内打印一行,因此捕获整个输出然后打印它的方法是不可能的,我希望打印是现场直播

【问题讨论】:

【参考方案1】:

编辑答案:

user Popen 代替 run() 然后:

x = subprocess.Popen(...,stdout=subprocess.STDOUT)
while True:
    line = x.stdout.readline()
    do whatever you want and decide if to print this line or not

【讨论】:

这正是我不想要的,就像我的通知说的那样,这会捕获整个输出,然后在完成后打印它,我希望能够在“实时”中打印方式 我会试试看,有什么我可以更改while True 以便在命令完成或发生错误时停止? 我确定有办法 - 也许尝试在循环中进行通信()以及何时获得返回码? ,需要检查一下 这虽然永远不会结束,所以这个答案并不是很有用:/ 当您阅读特定行并从中中断时,它将结束。或者就像我说的,你需要沟通

以上是关于将 subprocess.run 输出重定向到 jupyter notebook 的的主要内容,如果未能解决你的问题,请参考以下文章

如何抑制或捕获 subprocess.run() 的输出?

> 输出重定向

如何将 A 的标准输出重定向到 B 的标准输入,将 B 的标准输出重定向到 A 的标准输入?

重定向

重定向标准错误到标准输出 是啥意思

shell输入输出重定向