个人笔记,大佬勿喷
关于介绍,网上一堆,可自行百度
这里记录一下popen()接受命令返回值及处理,我想要的值是docker的ID
$ docker ps -q
2d3586a30e7e
03f1ca1331c7
但是使用python调用的时候没法直接得到这个结果,所以想要获取这个数据
#导入os这个模块
In [8]: import os
#使用popen接受docker ps -q这个命令的返回值
In [9]: a = os.popen('docker ps -q')
#先预读一下,但是每次使用必须重新赋值,不然就没有了
In [10]: a.read()
Out[10]: '2d3586a30e7e\n03f1ca1331c7\n' #这是个字符串类型
In [11]: a = os.popen('docker ps -q')
#使用换行分割,可以发现,最后多了一个空元素
In [12]: a.read().split('\n')
Out[12]: ['2d3586a30e7e', '03f1ca1331c7', '']
In [13]: a = os.popen('docker ps -q')
#使用readlines读取可以看到没有空元素,但是每个元素后有一个换行符
In [14]: a.readlines()
Out[14]: ['2d3586a30e7e\n', '03f1ca1331c7\n']
In [20]: a = os.popen('docker ps -q')
#对数据进行处理,可以得到我们想要的结果
In [21]: b = [i[0:-2] for i in a.readlines()]
In [22]: b
Out[22]: ['2d3586a30e7', '03f1ca1331c']
subprocess这个就比较方便了
In [1]: import subprocess
In [2]: subprocess.getoutput('docker ps -q').split('\n')
Out[2]: ['2d3586a30e7e', '03f1ca1331c7']
可以直接将命令的返回值保存出来,避免了数据处理
作者:valecalida