python中subprocess模組的使用

2021-09-24 19:28:30 字數 2253 閱讀 7353

import os

## os.system() #輸出命令結果到螢幕,返回命令的執行狀態

## os.popen("dir").read #會儲存命令的執行結果並輸出

# 在linux裡面

import subprocess

subprocess.run(

["ipconfig"

,"ping 192.168.1.1"])

#同時執行多條命令

subprocess.run(

"df -h |grep book"

,shell=

true

)#把book檔案過濾出來(涉及到管道符直接把字串傳給真正在呼叫的shell)

##subprocess模組常用命令

#執行命令,返回命令執行狀態 , 0 or 非0 和os.sys一樣

retcode = subprocess.call(

["ls"

,"-l"])

#執行命令,如果命令結果為0,就正常返回,否則拋異常

subprocess.check_call(

["ls"

,"-l"])

0##(必須會用的)接收字串格式命令,返回元組形式,第1個元素是執行狀態,第2個是命令結果(有執行狀態也有結果)

subprocess.getstatusoutput(

'ls /bin/ls')(

0,'/bin/ls'

)#接收字串格式命令,並返回結果

subprocess.getoutput(

'ls /bin/ls'

)'/bin/ls'

#執行命令,並返回結果,注意是返回結果,不是列印,下例結果返回給res

res=subprocess.check_output(

['ls'

,'-l'])

resb'total 0\ndrwxr-xr-x 12 alex staff 408 nov 2 11:05 oldboycrm\n'

##把結果存在管道裡,用stdout讀取

res=subprocess.popen(

"ifconfig|grep 192"

,shell=

true

,stdout=subprocess.pipe)

res.stdout.read(

)##stdout對螢幕的標準輸出

##stdin 標準輸入

##stderr 把錯誤單獨分開

res=subprocess.popen(

"ifcontttfig|grep 192"

,shell=

true

,stdout=subprocess.pipe,stderr=subprocess.pipe)

res.stdout.read(

)#因為命令錯誤所以讀取為空

res.stderr.read(

)#讀取錯誤資訊

# poll()

res=subprocess.popen(

"slppe 10;echo 'hello'"

,shell=

true

,stdout=subprocess.pipe,stderr=subprocess.pipe)

print

(res.poll())

#輸出none代表命令程式沒有執行完,返回0表示命令程式執行完。

res.wait(

)#等待命令執行完後返回0

res.terminate(

)#殺死正在執行程式,讀取程式資訊是空

# cwd

res=subprocess.popen(

"slppe 10;echo 'hello'"

,shell=

true

,stdout=subprocess.pipe,stderr=subprocess.pipe,cwd=

"/temp"

)res.stdout.read(

)#b'/tmp\n'新啟動的shell目錄所在的地方

#sudo自動輸入密碼

echo"123"

| sudo -s apt-get install vim #自動輸密碼

subprocess.popen(

"echo'123' | sudo -s apt-get install vim"

,shell=

true

)#在linux下呼叫python實現自動輸入密碼

Python常用模組之五 subprocess

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

python中 python中的 與

這一部分首先要理解python記憶體機制,python中萬物皆物件。對於不可變物件,改變了原來的值,其別名 變數名 繫結到了新值上面,id肯定會改變 對於可變物件,操作改變了值,id肯定會變,而 是本地操作,其值原地修改 對於 號操作,可變物件和不可變物件呼叫的都是 add 操作 對於 號操作,可變...

python中否定for 在python中否定函式

有沒有一種方法可以否定乙個函式,使它返回負數。在我的函式中,我有條件句,每個條件句都讓這個 烏龜 移動。有沒有一種方法可以否定這一點,所以烏龜的每乙個動作都是否定的。我說的是 狀況 在def ttinterpret program interpret program as a tinyturtle ...