从命令中读取反馈?

时间:2013-04-25 10:44:10

标签: python linux bash

我需要使用命令lsmod来检查是否加载了mod,但是在运行之后我不知道如何从中读取它。我正在使用subprocess.Popen()来运行它。任何正确方向的点都会非常感激。 :d

4 个答案:

答案 0 :(得分:2)

使用subprocess.Popen(stdout=subprocess.PIPE),然后调用subprocess.communicate()来读取输出。基本用法:

process = subprocess.Popen(['lsmod'], stdout=subprocess.PIPE) # Can also capture stderr
result_str = process.communicate()[0]  # Or [1] for stderr

有关详细信息,请参阅the Python documentation

答案 1 :(得分:1)

为什么不使用subprocess.check_output()

答案 2 :(得分:0)

lsmod不会告诉你这个。你必须解析它的输出。

如果您愿意使用外部模块,请查看https://github.com/agrover/python-kmod/

答案 3 :(得分:0)

假设您在ath中寻找lsmod,那么命令将是:lsmod | grep ath

使用subprocess

In [60]: c=subprocess.Popen("lsmod",stdout=subprocess.PIPE)

In [61]: gr=subprocess.Popen(["grep" ,"ath"],stdin=c.stdout,stdout=subprocess.PIPE)

In [62]: print gr.communicate()[0]
ath5k                 135206  0 
ath                    19188  1 ath5k
mac80211              461261  1 ath5k
cfg80211              175574  3 ath5k,ath,mac80211