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

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

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

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

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

【问题讨论】:

    标签: python subprocess


    【解决方案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 以便在命令完成或发生错误时停止?
    • 我确定有办法 - 也许尝试在循环中进行通信()以及何时获得返回码? ,需要检查一下
    • 这虽然永远不会结束,所以这个答案并不是很有用:/
    • 当您阅读特定行并从中中断时,它将结束。或者就像我说的,你需要沟通
    猜你喜欢
    • 1970-01-01
    • 2020-06-02
    • 2018-11-25
    • 1970-01-01
    • 2020-05-19
    • 2019-04-22
    • 2019-01-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多