Heim > Artikel > Backend-Entwicklung > So rufen Sie andere Programme in Python auf
In Python können Sie das OS-Modul problemlos zum Ausführen anderer Skripte oder Programme verwenden, sodass Sie die von anderen Skripten oder Programmen bereitgestellten Funktionen direkt im Skript verwenden können, ohne schreiben zu müssen die Implementierung noch einmal. Der Code für diese Funktion. Um den laufenden Prozess besser zu steuern, können Sie die Funktionen im Modul win32process verwenden. Wenn Sie den Prozess weiter steuern möchten, können Sie die Funktionen in kernel32.dll direkt mit dem Modul ctype aufrufen. Im Folgenden werden 4 Methoden vorgestellt:
1. os.system()-Funktion
Die system()-Funktion im OS-Modul kann bequem andere Programme oder Skripte ausführen. Der Modus ist wie folgt:
os.system(command): command: Befehl, der ausgeführt werden soll. Wenn Sie Parameter an das Skript übergeben möchten, können Sie Leerzeichen verwenden, um das Programm und mehrere Parameter zu trennen
Beispiel:
#打开记事本 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'))
2. ShellExecute-Funktion
verwendet die ShellExecute()-Funktion im Win32api-Modul, um andere Programme auszuführen, das Format ist wie folgt
ShellExecute(hwnd, op, file, args , dir, show)
hwnd: Das Handle des übergeordneten Fensters. Wenn kein übergeordnetes Fenster vorhanden ist, ist es 0
op: Der auszuführende Vorgang, der geöffnet ist , drucken oder leeren
Datei: Das auszuführende Programm oder das geöffnete Skript
Argumente: Parameter, die an das Programm übergeben werden sollen, leer, wenn die Datei geöffnet wird
dir: Vom Programm initialisiertes Verzeichnis
show: ob das Fenster angezeigt werden soll
Die Verwendung der ShellExecute-Funktion entspricht einem Doppelklick auf das Dateisymbol im Ressourcenmanager, und das System öffnet das entsprechendes Programm ausführen.
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', 'https://www.baidu.com/', '', 1) # 用IE浏览器打开百度网址 win32api.ShellExecute(0, 'open', 'mspaint.exe', 'wxqr.png', '', 1) #用系统附件自带的画图打开图片wxqr.png
3. CreateProcess
Prozess erstellen:
Um die Steuerung von Programmen zu erleichtern, die über Skripte ausgeführt werden, können Sie die Funktion CreateProcess() im Modul win32process verwenden Erstellen Sie einen Prozess, der das entsprechende Programm ausführt. Sein Funktionsformat ist: CreateProcess(appName, cmdLine, proAttr, threadAttr, InheritHandle, CreationFlags, newEnv, currentDir, Attr)
appName: Name der ausführbaren Datei
cmdLine: Befehlszeilenparameter
procAttr : Prozesssicherheitsattribute
threadAttr: Thread-Sicherheitsattribute
InheritHandle: Vererbungsflags
CreationFlags: Erstellungsflags
currentDir: Das aktuelle Verzeichnis des Prozesses
Attr: Attribute des erstellten Programms
Beenden Sie den Prozess:
Sie können die Funktion win32process.TerminateProcess verwenden, um den erstellten Prozess zu beenden. Das Funktionsformat ist wie folgt :
TerminateProcess(handle, exitCode)
handle: zu bedienendes Prozesshandle
exitCode: Prozess-Exit-Code
oder verwenden Sie win32event.WaitForSingleObject zum Warten Damit der erstellte Thread endet, lautet das Funktionsformat wie folgt:
WaitForSingleObject(handle, milisecond)
handle: Das zu bedienende Prozesshandle
milisecond: Das Warten Zeit, wenn es -1 ist, warten Sie weiter.
import 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)
4. Verwenden Sie ctypes, um Funktionen in kernel32.dll aufzurufen
Mit dem ctypes-Modul kann Python Funktionen in der Dynamic Link Library aufrufen.
Das ctypes-Modul bietet Python die Möglichkeit, Funktionen in dynamischen Linkbibliotheken aufzurufen. Mit dem ctypes-Modul können Sie ganz einfach eine in C-Sprache geschriebene Dynamic Link Library aufrufen und ihr Parameter übergeben.
Das ctypes-Modul definiert die grundlegenden Datentypen in der C-Sprache und kann Strukturen und Unions in der C-Sprache implementieren. Das ctypes-Modul kann auf mehreren Betriebssystemen wie Windows, Linux und Mac OS funktionieren und ist grundsätzlich plattformübergreifend.
Beispiel:
Rufen Sie die MessageBoxA-Funktion in user32.dll unter Windows auf.
from ctypes import * user32 = windll.LoadLibrary('user32.dll') a = user32.MessageBoxA(0, str.encode('Hello Ctypes!'), str.encode('Ctypes'), 0) print a
Weitere technische Artikel zum Thema Python finden Sie in der Spalte Python-Tutorial, um mehr darüber zu erfahren!
Das obige ist der detaillierte Inhalt vonSo rufen Sie andere Programme in Python auf. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!