首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >进行系统调用,将stdout输出作为字符串返回

进行系统调用,将stdout输出作为字符串返回
EN

Stack Overflow用户
提问于 2008-10-25 17:44:54
回答 24查看 13.5K关注 0票数 16

Perl和PHP用反引号来做这件事。例如,

代码语言:javascript
复制
$output = `ls`;

返回目录列表。类似的函数system("foo")返回给定命令foo的操作系统返回码。我说的是一个变量,它将foo打印的内容返回给stdout。

其他语言是如何做到这一点的?这个函数有没有一个规范的名字?(我使用"backtick";不过也许我可以造出“syslurp”。)

EN

回答 24

Stack Overflow用户

回答已采纳

发布于 2008-10-25 17:45:31

Perl:

代码语言:javascript
复制
$output = `foo`;

补充说:这真的是一个多方面的平局。上面的代码也是有效的PHP,例如,Ruby也使用相同的反引号表示法。

票数 3
EN

Stack Overflow用户

发布于 2008-10-25 19:35:51

Python

代码语言:javascript
复制
from subprocess import check_output as qx

output = qx(['ls', '-lt'])

Python <2.7或<3.1

subprocess.py中提取subprocess.check_output()或改编类似以下内容:

代码语言:javascript
复制
import subprocess

def cmd_output(args, **kwds):
  kwds.setdefault("stdout", subprocess.PIPE)
  kwds.setdefault("stderr", subprocess.STDOUT)
  p = subprocess.Popen(args, **kwds)
  return p.communicate()[0]

print cmd_output("ls -lt".split())

subprocess模块从2.4开始就已经包含在stdlib中。

票数 20
EN

Stack Overflow用户

发布于 2008-10-25 17:53:25

Python:

代码语言:javascript
复制
import os
output = os.popen("foo").read()
票数 12
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/236737

复制
相关文章

相似问题

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