首頁 >後端開發 >Python教學 >Python中subprocess函式庫的用法介紹

Python中subprocess函式庫的用法介紹

不言
不言轉載
2018-10-26 17:10:274115瀏覽

這篇文章帶給大家的內容是關於Python中subprocess庫的用法介紹,有一定的參考價值,有需要的朋友可以參考一下,希望對你有幫助。

介紹

使用subprocess模組的目的是用來替換os.system等一些舊的模組和方法。

導入模組

>>> import subprocess

指令執行call()

執行參數提供的指令,把陣列當作參數執行命令。其功能類似os.system(cmd)。

>>> subprocess.call(['ls','-l')

其中參數shell預設為False。
在shell設定為True時,可以直接傳送字串:

>>> subprocess.call('ls -l',shell=True)

取得回傳結果check_output()

call()是不回傳顯示的結果的,可以使用check_ouput()來獲得傳回的結果:

>>> result = subprocess.check_output(['ls','-l'],shell=True)
>>> result.decode('utf-8')

進程建立和管理Popen類別

subprocess.popen取代os.popen。可以創建一個Popen類別來創建進程和進行複雜的互動。

建立不等待的子程序

import subprocess
child = subprocess.Popen(['ping','-c','4','www.baidu.com'])
print('Finished')

新增子程序等待

import subprocess
child = subprocess.Popen(['ping','-c','4','www.baidu.com'])
child.wait()  # 等待子进程结束
print('Finished')

新增了wait()後,主進程會等待子進程結束後再執行下面的語句。

子程序文字流控制

標準輸出重定向:

import subprocess
child = subprocess.Popen(['ls','-l'],stdout=subprocess.PIPE)    #将标准输出定向输出到subprocess.PIPE
print(child.stdout.read())

使用stdin與其搭配使用:

import subprocess
child1 = subprocess.Popen(['cat','/etc/passwd'],stdout=subprocess.PIPE)
child2 = subprocess.Popen(['grep','root'],stdin=child1.stdout,stdout=subprocess.PIPE)
print child2.communicate()


以上是Python中subprocess函式庫的用法介紹的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:segmentfault.com。如有侵權,請聯絡admin@php.cn刪除