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

Python 使用子流程将系统命令的结果保存到变量,python,command,subprocess,Python,Command,Subprocess,我想得到linux机器上的第一个接口。我正在使用子类,我有以下代码: 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] 但是

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

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]
但是这个结果将被打印到控制台,而不会保存到变量中。如何将其重定向到变量

类似地,要在结果元组中获取除None之外的任何内容,您可以 需要给出
stdout=PIPE
和/或
stderr=PIPE


听起来是个好建议。添加
stdout=subprocess.PIPE
并查看发生了什么。

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()

好的,谢谢,效果很好,但是:我必须这样做
output=awk\u sort.communicate()[0]
才能得到实际的接口名+我得到带有新行符号的接口名。我怎样才能摆脱它呢?只需对字符串使用
rstrip
方法即可。