如何编写 subprocess.check_output 的异步版本?

Posted

技术标签:

【中文标题】如何编写 subprocess.check_output 的异步版本?【英文标题】:How do I write an async version of subprocess.check_output? 【发布时间】:2021-11-26 03:25:13 【问题描述】:

在新的 asyncio 框架中,我如何编写一个与 subprocess.check_output 等效的嵌入式异步来捕获流程执行的完整输出?

【问题讨论】:

你试过什么?你有什么具体问题? 【参考方案1】:
async def check_output(*args, **kwargs):
    p = await asyncio.create_subprocess_exec(
        *args, 
        stdout=asyncio.subprocess.PIPE,
        stderr=asyncio.subprocess.PIPE,
        **kwargs,
    )   
    stdout_data, stderr_data = await p.communicate()
    if p.returncode == 0:
        return stdout_data

一个简单的示例解决方案(失败时不会引发错误,而是返回 None)

【讨论】:

以上是关于如何编写 subprocess.check_output 的异步版本?的主要内容,如果未能解决你的问题,请参考以下文章

Linux 脚本编写 如何编写一个脚本,修改已有文件中的内容

如何编写高效代码

如何编写驱动程序?

Pycharm中如何使用宏快速编写代码

如何编写BasePage类

如何编写存储过程