python中接受上一条命令执行的结果----subprocess.check_output()

subprocess.call 是不能作为赋值的,需要用到 subprocess.check_output 函数,而且如果要引用赋值就必须使用subprocess.call(['echo',line])这种形式。

实例一、

对于纯字符串操作如下:

In [42]: import subprocess

In [101]: subprocess.call(['kubectl','get','nodes'])                                                                                 
NAME      STATUS    ROLES     AGE       VERSION
test2     Ready     node      2d        v1.11.0

In [42]: output=subprocess.check_output(["kubectl get nodes | grep test2 | awk '{print $1}'"], shell=True)                              

In [43]: name=output.decode('utf8').strip()                                                                                          

In [44]: print(line)                                                                                                                 
test2

In [83]:                                                                                              
test2

In [102]: subprocess.call(['kubectl','label','nodes',name,'node-role.kubernetes.io/node='])
 

实例二、

对于数字操作如下:

In [6]: import subprocess                                                                                                            

In [7]: output=subprocess.check_output(["head -c 16 /dev/urandom | od -An -t x | tr -d ' '"], shell=True)                            

In [8]: print(output)                                                                                                                
b'd3f4e95e05dfe34ea87217a55fb75bac\n'

In [9]: token=str(output.decode('utf8').strip()).strip('b')                                                                          

In [10]: print(token)                                                                                                                
d3f4e95e05dfe34ea87217a55fb75bac

 

posted @ 2019-01-31 15:53  effortsing  阅读(8461)  评论(0编辑  收藏  举报