使用子进程将系统命令的结果保存到变量

时间:2013-01-21 11:42:32

标签: python command subprocess

我想获得linux机器上的第一个接口。我正在使用subproces,我有以下代码:

def get_eth_iface():
    awk_sort = subprocess.Popen( ["-c", "ifconfig | cut -d ' ' -f 1 | grep eth | head -n 1" ], stdin= subprocess.PIPE, shell=True )
    awk_sort.wait()
    output = awk_sort.communicate()[0]

但是这个结果将打印到控制台,不会保存到变量中。如何将其重定向到变量?

2 个答案:

答案 0 :(得分:1)

http://docs.python.org/2/library/subprocess.html

  

同样,要在结果元组中获取除None之外的任何内容,您   需要提供stdout=PIPE和/或stderr=PIPE

听起来像个好建议。添加stdout=subprocess.PIPE,看看会发生什么。

答案 1 :(得分:1)

stdout重定向到subprocess.PIPE。以下为我工作。

import subprocess
def get_eth_iface():
    awk_sort = subprocess.Popen( ["dir" ], stdin= subprocess.PIPE, stdout= subprocess.PIPE)
    awk_sort.wait()
    output = awk_sort.communicate()[0]
    print output.rstrip()
get_eth_iface()