栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

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

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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

这是按清洁度递减的顺序 抑制 输出的方法。他们假设您使用的是Python 3。

  1. 您可以重定向到特殊

    subprocess.DEVNULL
    目标。

    import subprocess

    subprocess.run([‘ls’, ‘-l’], stdout=subprocess.DEVNULL)

    The above only redirects stdout…

    this will also redirect stderr to /dev/null as well

    subprocess.run([‘ls’, ‘-l’], stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL)

    Alternatively, you can merge stderr and stdout streams and redirect

    the one stream to /dev/null

    subprocess.run([‘ls’, ‘-l’], stdout=subprocess.DEVNULL, stderr=subprocess.STDOUT)

  2. 如果要使用完全手动的方法,可以

    /dev/null
    自己打开文件句柄来重定向到。其他所有内容都与方法1相同。

    import os
    import subprocess

    with open(os.devnull, ‘w’) as devnull:
    subprocess.run([‘ls’, ‘-l’], stdout=devnull)


以下是按清洁度递减的顺序 捕获 输出(以供以后使用或解析)的方法。他们假设您使用的是Python 3。

  1. 如果您只是想同时捕获STDOUT和STDERR,并且您使用的是Python> = 3.7,请使用

    capture_output=True

    import subprocess

    result = subprocess.run([‘ls’, ‘-l’], capture_output=True)
    print(result.stdout)
    print(result.stderr)

  2. 您可以用来

    subprocess.PIPE
    独立捕获STDOUT和STDERR。这 确实 对Python版本<3.7,如Python 3.6的工作。

    import subprocess

    result = subprocess.run([‘ls’, ‘-l’], stdout=subprocess.PIPE)
    print(result.stdout)

    To also capture stderr…

    result = subprocess.run([‘ls’, ‘-l’], stdout=subprocess.PIPE, stderr=subprocess.PIPE)
    print(result.stdout)
    print(result.stderr)

    To mix stdout and stderr into a single string

    result = subprocess.run([‘ls’, ‘-l’], stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
    print(result.stdout)

注意
:默认情况下,捕获的输出返回为

bytes
。如果要捕获为文本(例如
str
),请使用
universal_newlines=True
(或在Python>
= 3.7上,使用无限清晰和易于理解的选项
text=True
-相同,
universal_newlines
但名称不同)。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/647293.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号