在python中,可以方便地使用os模組來執行其他指令碼或者程式,這樣就可以在指令碼中直接使用其他指令碼或程式提供的功能,而不必再次編寫實現該功能的**。為了更好地控制執行的程序,
可以使用win32process模組中的函式,如果想進一步控制程序,則可以使用ctype模組,直接呼叫kernel32.dll中的函式。下面介紹4種方式:
os模組中的system()函式可以方便地執行其他程式或者指令碼,模式如下:
os.system(command):command: 要執行的命令,如果要向指令碼傳遞引數,可以使用空格分割程式及多個引數
例項:
#使用win32api模組中的shellexecute()函式來執行其他程式,格式如下開啟記事本
os.system('
notepad')
#用記事本開啟aa.txt
os.system('
notepad aa.txt
') #
aa.txt檔案必須在當前程式目錄
#直接開啟aa.txt
os.system('
aa.txt')
#直接開啟excel檔案
os.system('
aa.xlsx')
#直接開啟word檔案
os.system('
bb.docx')
filepath='
測試.xlsx'#
開啟包含中文的檔案
os.system(filepath.decode('
utf8
').encode('
gbk'))
shellexecute(hwnd, op, file, args, dir, show)
hwnd: 父視窗的控制代碼,如果沒有父視窗,則為0
op : 要執行的操作,為open,print或者為空
file: 要執行的程式,或者開啟的指令碼
args: 要向程式傳遞的引數,如果開啟的是檔案則為空
dir : 程式初始化的目錄
show: 是否顯示視窗
使用shellexecute函式,就相當於在資源管理器中雙擊檔案圖示,系統會開啟相應程式執行。
引用win32api,需要安裝 pywin32,
例項:
import參考例項:win32api
win32api.shellexecute(0,
'open
', '
notepad.exe
', '', '', 0) #
後台執行
win32api.shellexecute(0, '
open
', '
notepad.exe
', '', '', 1) #
前台開啟
win32api.shellexecute(0, '
open
', '
notepad.exe
', '
wmi.txt
', '', 1) #
開啟檔案
win32api.shellexecute(0, '
open
', '
iexplore.exe
', '', '', 1) #
開啟ie瀏覽器
win32api.shellexecute(0, '
open
', '
iexplore.exe
', '
', '', 1) #
win32api.shellexecute(0, '
open
', '
mspaint.exe
', '
wxqr.png
', '', 1) #
為了便於控制通過指令碼執行的程式,可以使用win32process模組中的createprocess()函式建立乙個執行相應程式的程序。其函式格式為:
cmdline 命令列引數
procattr 程序安全屬性
threadattr 執行緒安全屬性
inherithandle 繼承標誌
creationflags 建立標誌
currentdir 程序的當前目錄
attr 建立程式的屬性
可以使用win32process.terminateprocess函式來結束已建立的程序, 函式格式如下:
terminateprocess(handle, exitcode)
handle 要操作的程序控制代碼
exitcode 程序退出**
或者使用win32event.waitforsingleobject等待建立的執行緒結束,函式格式如下:
waitforsingleobject(handle, milisecond)
handle : 要操作的程序控制代碼
milisecond: 等待的時間,如果為-1,則一直等待.
import使用ctypes模組可以讓python呼叫位於動態鏈結庫的函式。win32process
#開啟記事本,獲得其控制代碼
handle = win32process.createprocess(r'
c:\windows\notepad.exe
', ''
, none, none, 0, win32process.create_no_window, none, none, win32process.startupinfo())
time.sleep(4)
#終止程序
win32process.terminateprocess(handle[0], 0)
import
win32event
#等待程序結束
print win32event.waitforsingleobject(handle[0], -1)
ctypes模組為python提供了呼叫動態鏈結庫中函式的功能。使用ctypes模組可以方便地呼叫由c語言編寫的動態鏈結庫,並向其傳遞引數。
ctypes模組定義了c語言中的基本資料型別,並且可以實現c語言中的結構體和聯合體。ctypes模組可以工作在windows,linux,mac os等多種作業系統,基本上實現了跨平台。
例項:windows下呼叫user32.dll中的messageboxa函式。
ctype模組中含有的基本型別與c語言類似,下面是幾個基本的資料型別的對照:
python呼叫其他程式 python呼叫其他程式
在python中可以方便地使用os模組執行其他的指令碼或者程式,這樣就可以在指令碼中直接使用其他指令碼,或者程式提供的功能,而不必再次編寫實現該功能的 為了更好地控制執行的程序,可以使用win32process模組中的函式。如果想進一步控制程序,則可以使用ctype模組,直接呼叫kernel32.d...
呼叫其他程式
1含有事務碼 1.1不注入引數,直接呼叫 call transaction suim and skip first screen.1.2注入引數,setparameter id 螢幕字段 field 填充的字段值,螢幕字段 field 填充的字段值.call transaction demo tra...
python 建立程序呼叫其他程式
import subprocess import sys defmain 通過sys.argv獲取命令列引數 if len sys.argv 1 第乙個命令列引數是程式本身所以從第二個開始取 for index in range 1,len sys.argv try 通過subprocess模組的c...