欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

python如何調(diào)用操作系統(tǒng)原語

錢衛(wèi)國1年前11瀏覽0評論

python如何調(diào)用操作系統(tǒng)原語?

在Python里面,直接調(diào)用系統(tǒng)命令,可以快速的完成任務(wù)。一般使用os或者subprocess模塊,來執(zhí)行系統(tǒng)命令。

os.system()

該函數(shù)返回命令執(zhí)行結(jié)果的返回值,system()函數(shù)在執(zhí)行過程中進(jìn)行了以下三步操作:

1、fork一個子進(jìn)程;

2、在子進(jìn)程中調(diào)用exec函數(shù)去執(zhí)行命令;

3、在父進(jìn)程中調(diào)用wait(阻塞)去等待子進(jìn)程結(jié)束。

返回0表示命令執(zhí)行成功,其他表示失敗。

注意:使用該函數(shù)經(jīng)常會莫名其妙地出現(xiàn)錯誤,但是直接執(zhí)行命令并沒有問題,所以一般建議不要使用。

用法:os.system(“command”)

os.popen()這種調(diào)用方式是通過管道的方式來實現(xiàn),函數(shù)返回是 file read 的對象,對其進(jìn)行讀取read、readlines等操作可以看到執(zhí)行的輸出。

注意:如果命令執(zhí)行失敗,就讀取不到內(nèi)容。

用法:os.popen(“command”)

subprocess.Popen()subprocess模塊被推薦用來替換一些老的模塊和函數(shù),如:os.system、os.spawn*、os.popen*等

subprocess模塊目的是fork一個新的進(jìn)程并與之通信,最常用是定義類Popen,使用Popen可以創(chuàng)建進(jìn)程,并與進(jìn)程進(jìn)行復(fù)雜的交互。其函數(shù)原型為:

subprocess.Popen(args, bufsize=0, executable=None, stdin=None, stdout=None, stderr=None, preexec_fn=None, close_fds=False, shell=False, cwd=None, env=None, universal_newlines=False, startupinfo=None, creationflags=0)1args:這個參數(shù)必須是字符串或者是一個由字符串成員的列表。其中如果是一個字符串列表的話,那第一個成員為要運行的程序的路徑以及程序名稱;從第二個成員開始到最后一個成員為運行這個程序需要輸入的參數(shù)。

executable:指定要運行的程序,這個一般很少用到,因為要指定運行的程序在args中已經(jīng)指定了。stdin,stdout ,stderr:分別代表程序的標(biāo)準(zhǔn)輸入、標(biāo)準(zhǔn)輸出、標(biāo)準(zhǔn)錯誤處理。可以選擇的值有PIPE,已經(jīng)存在的打開的文件對象和NONE。若stdout是文件對象的話,要確保文件對象是處于打開狀態(tài)。

shell:默認(rèn)是False。shell參數(shù)根據(jù)要執(zhí)行的命令情況來定,如果將參數(shù)shell設(shè)為True,executable將指定程序使用的shell。在windows平臺下,默認(rèn)的shell由COMSPEC環(huán)境變量來指定。

bufsize:指定緩沖。0 無緩沖,1 行緩沖,其他 緩沖區(qū)大小,負(fù)值 系統(tǒng)緩沖

cwd:用于設(shè)置子進(jìn)程的當(dāng)前目錄

stdin, stdout, stderr:分別表示程序的標(biāo)準(zhǔn)輸入、標(biāo)準(zhǔn)輸出、標(biāo)準(zhǔn)錯誤輸出,可以是 subprocess.PIPE 或 其他程序、文件。

env:用于指定子進(jìn)程的環(huán)境變量。如果env = None,子進(jìn)程的環(huán)境變量將從父進(jìn)程中繼承。

universal_newlines:不同系統(tǒng)的換行符不同,True 即使用 \n

preexec_fn:只在Unix平臺下有效,用于指定一個可執(zhí)行對象(callable object),它將在子進(jìn)程運行之前被調(diào)用。

用法: child = subprocess.Popen([“cmd”,“arg1”…])

subprocess.Popen類的實例可調(diào)用的方法Popen.poll() 用于檢查子進(jìn)程(命令)是否已經(jīng)執(zhí)行結(jié)束,沒結(jié)束返回None,結(jié)束后返回狀態(tài)碼。

Popen.wait(timeout=None)等待子進(jìn)程結(jié)束,并返回狀態(tài)碼;如果在timeout指定的秒數(shù)之后進(jìn)程還沒有結(jié)束,將會拋出一個TimeoutExpired異常。

Popen.communicate(input=None, timeout=None)該方法可用來與進(jìn)程進(jìn)行交互,比如發(fā)送數(shù)據(jù)到stdin,從stdout和stderr讀取數(shù)據(jù),直到到達(dá)文件末尾。

Popen.send_signal(signal)發(fā)送指定的信號給這個子進(jìn)程。

Popen.terminate()停止該子進(jìn)程。

Popen.kill()殺死該子進(jìn)程。

java read拋出,python如何調(diào)用操作系統(tǒng)原語