Python3的os.popen()與subprocess使用(關於數據處理)

個人筆記,大佬勿噴

關於介紹,網上一堆,可自行百度

這裏記錄一下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']

可以直接將命令的返回值保存出來,避免了數據處理

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章