为了账号安全,请及时绑定邮箱和手机立即绑定

将子进程的输出存储在字符串中

将子进程的输出存储在字符串中

LEATH 2019-06-27 17:05:30
将子进程的输出存储在字符串中我试图用Python进行系统调用,并将输出存储到Python程序中可以操作的字符串中。#!/usr/bin/pythonimport subprocess p2 = subprocess.Popen("ntpq -p")我尝试了一些东西,包括这里的一些建议:检索Subprocess.Call()的输出但没有任何运气。
查看完整描述

3 回答

?
汪汪一只猫

TA贡献1898条经验 获得超8个赞

在Python2.7或Python3中

而不是制造一个Popen对象时,可以使用subprocess.check_output()功能若要将命令的输出存储在字符串中,请执行以下操作:

from subprocess import check_output
out = check_output(["ntpq", "-p"])

在Python2.4-2.6中

使用communicate方法。

import subprocess
p = subprocess.Popen(["ntpq", "-p"], stdout=subprocess.PIPE)out, err = p.communicate()

out是你想要的。

关于其他答案的重要注意事项

注意我是如何传递命令的。这个"ntpq -p"例子引发了另一件事。自Popen不调用shell,您将使用命令和选项的列表-["ntpq", "-p"].


查看完整回答
反对 回复 2019-06-27
?
桃花长相依

TA贡献1860条经验 获得超8个赞

这对于我重定向stdout(stderr可以类似地处理)起了作用:

from subprocess import Popen, PIPE
pipe = Popen(path, stdout=PIPE)text = pipe.communicate()[0]

如果它对你不起作用,请具体说明你遇到的问题。


查看完整回答
反对 回复 2019-06-27
  • 3 回答
  • 0 关注
  • 579 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信