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