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