Python3的os.popen()与subprocess使用(关于数据处理)

Debbie ·
更新时间:2024-11-10
· 745 次阅读

个人笔记,大佬勿喷

关于介绍,网上一堆,可自行百度

这里记录一下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



数据 popen subprocess 数据处理 Python3 Python

需要 登录 后方可回复, 如果你还没有账号请 注册新账号