Python標准庫之subprocess模塊


運行python的時候,我們都是在創建並運行一個進程。像Linux進程那樣,一個進程可以fork一個子進程,並讓這個子進程exec另外一個程序。在Python中,我們通過標准庫中的subprocess包來fork一個子進程,並運行一個外部的程序。 subprocess包中定義有數個創建子進程的函數,這些函數分別以不同的方式創建子進程,所以我們可以根據需要來從中選取一個使用。另外subprocess還提供了一些管理標准流(standard stream)和管道(pipe)的工具,從而在進程間使用文本通信。

 

subprocess.call()

父進程等待子進程完成

import subprocess

a = subprocess.call(['ipconfig','/all'])
print(a)
#執行命令,如果命令結果為0,就正常返回,否則拋異常

  

 

 

 

getstatusoutput()

接收字符串格式命令,返回元組形式,第1個元素是執行狀態,第2個是命令結果

import subprocess

a = subprocess.getstatusoutput("whoami")
print(a)
#輸出
(0, 'desktop-xxxx\\admin')

  

 

getoutput()

接收字符串格式命令,並返回結果。

import subprocess

a = subprocess.getoutput("whoami")
print(a)
#輸出
desktop-xxxx\admin

  

 

check_output()

執行命令,並返回結果,下例結果返回給a。

import subprocess

a = subprocess.check_output(['ipconfig','/all'])
print(a)

  

 

 

Popen()

上面的幾個函數都是基於Popen()的封裝(wrapper)。這些封裝的目的在於讓我們容易使用子進程。當我們想要更個性化我們的需求的時候,就要轉向Popen類,該類生成的對象用來代表子進程。

import subprocess

a = subprocess.Popen(['ping','-c','1','www.baidu.com'],shell=True)
a.wait()

  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM