python呼叫外部程式的方法

2021-09-29 04:26:05 字數 2822 閱讀 2945

import os

'''#os.system()#這個函式執行起來開啟dos視窗作業系統的shell,敲入一串命令

#比如mspaint命令,我們可以手動執行這個命令。這個過程可以在python程式中,用os.system函式進行自動化

os.system('mspaint')#呼叫的這個程式沒有退出時,python程式會一直停留在這個地方

#說個題外話ctrl+滑鼠左鍵可以直接跳入該函式檢視

print('after call')#上方那個程式退出後,下面的內容才會被列印出來

''''''

#如果在dos視窗中該程式有命令列,那麼使用os函式也可以新增命令列用空格隔開

# 比如mspaint這個軟體是截圖軟體,在dos視窗中直接輸入mspaint這個命令會直接開啟畫圖工具,

# 輸入mspaint e:\\1.png會使用畫圖工具開啟這個,那麼使用os函式也會有這個效果

os.system(r'mspaint d:\\1.png')

print('after call')

''''''#上面的例子是乙個簡單的例子,命令也很簡單,但是有些程式的命令很複雜直接看例子,開源的一款軟體ffmpeg

# 它的命令列非常複雜,這時候我們就可以用這個程式來吧命令列傳入,然後需要使用者決定的東西引數化,

# 這樣使用者就只需要簡單的寫入引數就可以了

# ffmpeg.exe -y -rtbufsize 100m -f gdigrab -framerate 10 -draw_mouse 1 -i desktop -c:v libx264 -r 20 -crf 35 -pix_fmt yuv420p -fs 100m "fffffffffffffffff"

'''#程式在退出的時候會有乙個退出碼,通常可以表示程式是否正確的實現了其功能,返回值為零,表示命令執行成功

#在使用python呼叫這些程式時,通常需要這些退出碼來決定是否進行後續操作,下面還是看**

r = os.system('dir')

print(r)#此時r的列印結果是0,如果乙個程式它的退出碼為0那麼就表示這個程式成功退出了

''''''

#os.system()是乙個簡單地呼叫其他程式的功能python中還有另外乙個模組subprocess,提供了更為強大的功能

# 通常使用subprocess最常見的目的就是檢查應用的輸出,而os只能獲取返回碼,不能獲取輸出到螢幕的內容

# 如果想獲取被呼叫的命令或工具輸出到終端的資訊並進行處理,可以使用subprocess庫里的check_out put 函式

import subprocess

#shell=true 表示使用終端shell執行程式,windows下面就是cmd.exe

ret = subprocess.check_output('dir',shell=true,encoding='gbk')

print(ret)

#subprocess.check_output()需要等到被呼叫的程式退出,才能返回。

''''''

# 有時我們需要被呼叫程式還沒有退出的時候,就獲取其輸出的資訊

# 或者在被呼叫程式執行的過程中,輸出一些資訊給被呼叫程式

# 這個時候我們需要使用subprocess 庫裡面的popen類

# 這個是這個類定義的引數如下

# #subprocess.popen(args, bufsize=-1, executable=none, stdin=none, stdout=none, stderr=none, preexec_fn=none,

# # close_fds=true, shell=false, cwd=none, env=none, universal_newlines=false, startupinfo=none,

# # creationflags=0, restore_signals=true, start_new_session=false, pass_fds=(), *, encoding=none, errors=none)

# 而需要我們特別注意的是args/shell/stdout/stderr/encoding這五個

# popen可以非阻塞式呼叫外部的程式,也就是說它不需要等被呼叫的程式結束,指令碼**可以繼續往下執行

from subprocess import popen

popen = popen(

args = r'mspaint d:\\1.png',

shell = true

)print('我不需要上面的**結束我就可以執行')#這句話不需要關閉上面在執行的程式就能執行

#popen同樣可以獲取外部程式的輸出資訊

from subprocess import pipe

popen1 = popen(

args = 'dir f:',#args =可以省略,原因可以看看預設引數,前面講的有,引數傳錯的時候err的資訊不會為 none

stdout = pipe,

shell = true,

encoding='gbk'

)output,err = popen1.communicate()#

print(output,err)

# 注意stdout = pipe 表示 我們下面需要將呼叫的程式的標準輸出資訊獲取到管道檔案中,

# pipe是表示將輸入資訊流入到管道檔案的意思。

# 如果我們要獲取程式的輸出資訊,就要這樣指定。

# 後面執行

# output, err = popen.communicate()

#popen.communicate()返回的就是 標準輸出和標準錯誤 上面輸出的文字資訊

'''

Python呼叫(執行)外部程式

在python中可以方便地使用os模組執行其他的指令碼或者程式,這樣就可以在指令碼中直接使用其他指令碼,或者程式提供的功能,而不必再次編寫實現該功能的 為了更好地控制執行的程序,可以使用win32process模組中的函式。如果想進一步控制程序,則可以使用ctype模組,直接呼叫kernel32.d...

Python呼叫(執行)外部程式

1 使用os.system函式執行其他程式 2 使用shellexecute函式執行其他程式 3 使用createprocess函式執行其他程式 4 使用ctypes呼叫kernel32.dll中的函式 1 使用os.system函式執行其他程式 os模組中的system 函式可以方便地執行其他程式...

Python呼叫(執行)外部程式

在python中可以方便地使用os模組執行其他的指令碼或者程式,這樣就可以在指令碼中直接使用其他指令碼,或者程式提供的功能,而不必再次編寫實現該功能的 為了更好地控制執行的程序,可以使用win32process模組中的函式。如果想進一步控制程序,則可以使用ctype模組,直接呼叫kernel32.d...