Heim  >  Artikel  >  Backend-Entwicklung  >  So rufen Sie andere Programme in Python auf

So rufen Sie andere Programme in Python auf

尚
Original
2019-07-03 14:02:4610233Durchsuche

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

So rufen Sie andere Programme in Python auf

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn