在Python中,可以友善地使用os子產品來運作其他腳本或者程式,這樣就可以在腳本中直接使用其他腳本或程式提供的功能,而不必再次編寫實作該功能的代碼。
為了更好地控制運作的程序,可以使用win32process子產品中的函數,如果想進一步控制程序,則可以使用ctype子產品,直接調用kernel32.dll中的函數.
【方式一】使用os.system()函數運作其他程式
os子產品中的system()函數可以友善地運作其他程式或者腳本,模式如下:
os.system(command)
command: 要執行的指令,如果要向腳本傳遞參數,可以使用空格分割程式及多個參數。
示例如下:
【方式二】使用ShellExecute函數運作其他程式
除了使用os.system()函數外,還可以使用win32api子產品中的ShellExecute()函數來運作其他程式,格式如下:
ShellExecute(hwnd, op, file, args, dir, show)
hwnd: 父視窗的句柄,如果沒有父視窗,則為0
op: 要運作的操作,為open,print或者為空
file: 要運作的程式,或者打開的腳本
args: 要向程式傳遞的參數,如果打開的是檔案則為空
dir: 程式初始化的目錄
show: 是否顯示視窗
使用ShellExecute函數,就相當于在資料總管中輕按兩下檔案圖示,系統會打開相應程式運作。
NOTE:
win32api安裝 http://sourceforge.net/projects/pywin32/files/pywin32/ 因我的是64的作業系統,是以下載下傳了這個:pywin32-216.win-amd64-py2.7
【方式三】使用ShellExecute函數運作其他程式
建立程序:
為了便于控制通過腳本運作的程式,可以使用win32process子產品中的CreateProcess()函數建立
一個運作相應程式的程序。其函數格式為:
CreateProcess(appName, cmdLine, proAttr, threadAttr, InheritHandle, CreationFlags, newEnv, currentDir, Attr)
appName 可執行檔案名
cmdLine 指令行參數
procAttr 程序安全屬性
threadAttr 線程安全屬性
InheritHandle 繼承标志
CreationFlags 建立标志
currentDir 程序的目前目錄
Attr 建立程式的屬性
結束程序:
可以使用win32process.TerminateProcess函數來結束已建立的程序, 函數格式如下:
TerminateProcess(handle, exitCode)
handle 要操作的程序句柄
exitCode 程序退出代碼
或者使用win32event.WaitForSingleObject等待建立的線程結束,函數格式如下:
WaitForSingleObject(handle, milisecond)
handle : 要操作的程序句柄
milisecond: 等待的時間,如果為-1,則一直等待.
【方式四】使用ctypes調用kernel32.dll中的函數
使用ctypes子產品可以讓Python調用位于動态連結庫的函數。
ctypes子產品為Python提供了調用動态連結庫中函數的功能。使用ctypes子產品可以友善地調用由C語言編寫的動态連結庫,并向其傳遞參數。
ctypes子產品定義了C語言中的基本資料類型,并且可以實作C語言中的結構體和聯合體。ctypes子產品可以工作在Windows,Linux,Mac OS等多種作業系統,基本上實作了跨平台。
示例:
Windows下調用user32.dll中的MessageBoxA函數。
ctype子產品中含有的基本類型與C語言類似,下面是幾個基本的資料類型的對照:
原文釋出時間為:2018-10-9
本文作者:MayMatrix
本文來自雲栖社群合作夥伴“
Python專欄”,了解相關資訊可以關注“
”。