Python常用模組之五 subprocess

2022-09-11 07:54:10 字數 1790 閱讀 4605

python引入subprocess模組來管理子程序,以取代一些舊模組的方法:如 os.system、os.spawn*、os.popen*、popen2.*、commands.*不但可以呼叫外部的命令作為子程序,而且可以連線到子程序的input/output/error管道,獲取相關的返回資訊。

subprocess模組中只定義了乙個類: popen。可以使用popen來建立程序,並與程序進行複雜的互動。

subprocess.call()

父程序等待子程序完成

返回退出資訊(returncode,相當於linux exit code)

subprocess.check_call()

父程序等待子程序完成

返回0檢查退出資訊,如果returncode不為0,則舉出錯誤subprocess.calledprocesserror,該物件包含有returncode屬性,可用try…except…來檢查

subprocess.check_output()

父程序等待子程序完成

返回子程序向標準輸出的輸出結果

檢查退出資訊,如果returncode不為0,則舉出錯誤subprocess.calledprocesserror,該物件包含有returncode屬性和output屬性,output屬性為標準輸出的輸出結果,可用try…except…來檢查。

>>> import subprocess

>>> retcode = subprocess.call(["ls", "-l"])

#和shell中命令ls -a顯示結果一樣

>>> print retcode

0

popen的方法:

popen.poll() 

用於檢查子程序是否已經結束。設定並返回returncode屬性。

popen.wait() 

等待子程序結束。設定並返回returncode屬性。

popen.communicate(input=none)

與子程序進行互動。向stdin傳送資料,或從stdout和stderr中讀取資料。可選引數input指定傳送到子程序的引數。communicate()返回乙個元組:(stdoutdata, stderrdata)。注意:如果希望通過程序的stdin向其傳送資料,在建立popen物件的時候,引數stdin必須被設定為pipe。同樣,如果希望從stdout和stderr獲取資料,必須將stdout和stderr設定為pipe。

popen.send_signal(signal) 

向子程序傳送訊號。

popen.terminate()

停止(stop)子程序。在windows平台下,該方法將呼叫windows api terminateprocess()來結束子程序。

popen.kill()

殺死子程序。

popen.stdin 

如果在建立popen物件是,引數stdin被設定為pipe,popen.stdin將返回乙個檔案物件用於策子程序傳送指令。否則返回none。

popen.stdout 

如果在建立popen物件是,引數stdout被設定為pipe,popen.stdout將返回乙個檔案物件用於策子程序傳送指令。否則返回none。

popen.stderr 

如果在建立popen物件是,引數stdout被設定為pipe,popen.stdout將返回乙個檔案物件用於策子程序傳送指令。否則返回none。

popen.pid 

獲取子程序的程序id。

popen.returncode 

獲取程序的返回值。如果程序還沒有結束,返回none。

python常用內建模組(五)

requests 一 collections 是python內建的乙個集合模組,提供了許多有用的集合類。namedtuple,是乙個函式,用來建立乙個自定義的tuple物件,格式 namedtuple 名稱 屬性list 例如 建立乙個座標為 1,2 的點 from collections impo...

PYTHON 之 常用模組

使用需要先導入 import calendar呼叫例子 calendar 獲取一年的日曆字串 引數 w 每個日期之間的間隔字元數 l 每週所占用的行數 c 每個月之間的間隔字元數 cal calendar.calendar 2017 print type cal print cal cal cale...

Python之常用模組

time模組 時間表示形式 1 時間戳 timestamp 通常來說,時間戳表示的是從1970年1月1日00 00 00開始按秒計算的偏移量。我們執行 type time.time 返回的是float型別。2 格式化的時間字串 format string 1988 09 29 3 元組 struct...