Python中subprocess模組的使用

2021-06-22 19:17:43 字數 2501 閱讀 9239

執行命令:

[python]view plain

copy

>>> subprocess.call([

"ls"

, "-l"

])  

0>>> subprocess.call("exit 1"

, shell=

true

)  1

測試呼叫系統中cmd命令,顯示命令執行的結果:

[python]view plain

copy

x=subprocess.check_output([

"echo"

, "hello world!"

],shell=

true

)  print

(x)  

"hello world!"

測試在python中顯示檔案內容:

[python]view plain

copy

y=subprocess.check_output([

"type"

, ],shell=

true

)  print

(y)  

#include 

using namespace std;    

......  

檢視ipconfig -all命令的輸出,並將將輸出儲存到檔案tmp.log中:

[python]view plain

copy

handle = open(r

'd:\tmp.log'

,'wt'

)  subprocess.popen(['ipconfig'

,'-all'

], stdout=handle)  

檢視網路設定ipconfig -all,儲存到變數中:

[python]view plain

copy

output = subprocess.popen([

'ipconfig'

,'-all'

], stdout=subprocess.pipe,shell=

true

)  oc=output.communicate()#取出output中的字串

#communicate() returns a tuple (stdoutdata, stderrdata).

print

(oc[

0]) 

#列印網路資訊

windows ip configuration  

host name . . . . .  

我們可以在popen()建立子程序的時候改變標準輸入、標準輸出和標準錯誤,並可以利用subprocess.pipe將多個子程序的輸入和輸出連線在一起,構成管道(pipe):

[python]view plain

copy

child1 = subprocess.popen([

"dir"

,"/w"

], stdout=subprocess.pipe,shell=

true

)  child2 = subprocess.popen(["wc"

], stdin=child1.stdout,stdout=subprocess.pipe,shell=

true

)  out = child2.communicate()  

print

(out)  

('      9      24     298\n'

, none

)  

如果想頻繁地和子執行緒通訊,那麼不能使用communicate();因為communicate通訊一次之後即關閉了管道.這時可以試試下面的方法:

[plain]view plain

copy

p= subprocess.popen(["wc"], stdin=subprocess.pipe,stdout=subprocess.pipe,shell=true)  

p.stdin.write('your command')  

p.stdin.flush()  

#......do something   

try:  

#......do something  

p.stdout.readline()  

#......do something  

except:  

print('ioerror')  

#......do something more  

p.stdin.write('your other command')  

p.stdin.flush()  

#......do something more  

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 ...