gpt4 book ai didi

Python:运行 os.system 后如何获取标准输出?

转载 作者:IT老高 更新时间:2023-10-28 21:33:34 29 4
gpt4 key购买 nike

我想在运行 os.system 调用后获取变量中的 stdout

我们以这一行为例:

batcmd="dir"
result = os.system(batcmd)

result 将包含错误代码(Windows 下的 stderr 0 或某些 linux 下的 1 用于上述示例)。

如何在不使用重定向的情况下获取上述命令的 stdout 执行命令?

最佳答案

如果您只需要 stdout 输出,请查看 subprocess.check_output() :

import subprocess

batcmd="dir"
result = subprocess.check_output(batcmd, shell=True)

因为您使用的是 os.system(),所以您必须设置 shell=True 才能获得相同的行为。您确实想注意 security concerns关于将不受信任的参数传递给你的 shell。

如果您还需要捕获 stderr,只需在调用中添加 stderr=subprocess.STDOUT:

result = subprocess.check_output([batcmd], stderr=subprocess.STDOUT)

将错误输出重定向到默认输出流。

如果知道输出是文本,添加 text=True 以平台默认编码解码返回的字节值;如果该编解码器对于您收到的数据不正确,请改用 encoding="..."

关于Python:运行 os.system 后如何获取标准输出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18739239/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com