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