首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >subprocess.run和subprocess.check_output有什么区别?

subprocess.run和subprocess.check_output有什么区别?
EN

Stack Overflow用户
提问于 2022-02-22 11:53:16
回答 1查看 915关注 0票数 4

我试图使用subprocess.run发送两个简单的命令&试图将结果存储在一个变量中,然后打印出来,但是对于一个arg,输出是subprocess.run &另一个是空的。

Arg是"help" & "adb设备“

命令,该命令返回输出

代码语言:javascript
复制
result = subprocess.run("help", capture_output=True, text=True, universal_newlines=True)
print(result.stdout)

但是,具有不同arg的命令不会返回。

代码语言:javascript
复制
result = subprocess.run("adb devices", capture_output=True, text=True, universal_newlines=True)
print(result.stdout)

如果我用subprocess.checkoutput来尝试相同的命令,它会返回输出,任何人都能解释到底发生了什么吗?对于这些命令,有什么特定的使用场景,比如什么时候使用哪个命令?

代码语言:javascript
复制
c = subprocess.check_output(
        "adb devices", shell=True, stderr=subprocess.STDOUT)

print(c)
output - b'List of devices attached\r\n\r\n'
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-02-22 12:45:55

这是因为从这里的python文档来看:运行方法

run方法接受第一个参数作为参数,而不是字符串。

因此,您可以尝试将参数传递到列表中如下:

代码语言:javascript
复制
result = subprocess.run(['abd', 'devices'], capture_output=True, text=True, universal_newlines=True)

此外,输出方法接受args,但是它有一个参数调用"shell = True",因此它适用于多字args。

如果要使用没有列表的run方法,请在run方法参数中添加shell=True。(我试着使用"man“命令,它起了作用)。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71220825

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档