首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Python中的Bash Backticks等效项

Python中的Bash Backticks等效项
EN

Stack Overflow用户
提问于 2009-09-11 13:47:53
回答 7查看 45.7K关注 0票数 88

在Python中,Ruby和Perl中的反引号对应的是什么?也就是说,在Ruby中我可以这样做:

代码语言:javascript
复制
foo = `cat /tmp/baz`

在Python中等价的语句是什么样子的?我尝试过os.system("cat /tmp/baz"),但它将结果标准化,并返回给我该操作的错误代码。

EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2009-09-11 13:53:48

代码语言:javascript
复制
output = os.popen('cat /tmp/baz').read()
票数 107
EN

Stack Overflow用户

发布于 2009-09-11 13:52:17

最灵活的方法是使用subprocess模块:

代码语言:javascript
复制
import subprocess

out = subprocess.run(["cat", "/tmp/baz"], capture_output=True)
print("program output:", out)

capture_output是在Python3.7中引入的,对于较老的版本,可以使用特殊的函数check_output()

代码语言:javascript
复制
out = subprocess.check_output(["cat", "/tmp/baz"])

如果您需要细粒度控制,也可以手动构造子流程对象:

代码语言:javascript
复制
proc = subprocess.Popen(["cat", "/tmp/baz"], stdout=subprocess.PIPE)
(out, err) = proc.communicate()

所有这些函数都支持keyword parameters自定义子流程的执行方式。例如,如果您需要*的文件名扩展之类的东西,您可以使用shell=True通过shell执行程序,但这是limitations附带的。

票数 85
EN

Stack Overflow用户

发布于 2011-09-19 17:58:23

代码语言:javascript
复制
foo = subprocess.check_output(["cat", "/tmp/baz"])
票数 16
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1410976

复制
相关文章

相似问题

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