Maison > Article > développement back-end > Comment appeler d'autres programmes en python
En Python, vous pouvez facilement utiliser le module os pour exécuter d'autres scripts ou programmes, afin de pouvoir utiliser directement les fonctions fournies par d'autres scripts ou programmes dans le script sans avoir à écrire l'implémentation à nouveau. Le code de cette fonction. Afin de mieux contrôler le processus en cours, vous pouvez utiliser les fonctions du module win32process. Si vous souhaitez contrôler davantage le processus, vous pouvez utiliser le module ctype pour appeler directement les fonctions de kernel32.dll. Voici 4 méthodes :
1. Fonction os.system()
La fonction system() du module os peut facilement exécuter d'autres programmes ou scripts. Le mode est le suivant :
os.system(command): command : commande à exécuter. Si vous souhaitez transmettre des paramètres au script, vous pouvez utiliser des espaces pour séparer le programme et plusieurs paramètres
Exemple :
#打开记事本 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. La fonction ShellExecute
utilise la fonction ShellExecute() dans le module win32api pour exécuter d'autres programmes, le format est le suivant
ShellExecute(hwnd, op, file, args , dir, show)
hwnd : Le handle de la fenêtre parent, s'il n'y a pas de fenêtre parent, c'est 0
op : L'opération à exécuter, qui est ouverte , imprimer ou vide
fichier : Le programme à exécuter, Ou le script ouvert
args : paramètres à passer au programme, vide si le fichier est ouvert
dir : répertoire initialisé par le programme
show : s'il faut afficher la fenêtre
Utiliser la fonction ShellExecute équivaut à double-cliquer sur l'icône du fichier dans le gestionnaire de ressources, et le système ouvrira le programme correspondant à exécuter.
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
Créer un processus :
Afin de faciliter le contrôle des programmes exécutés via des scripts, vous pouvez utiliser la fonction CreateProcess() dans le module win32process pour créer un processus qui exécute le programme correspondant. Son format de fonction est : CreateProcess(appName, cmdLine, proAttr, threadAttr, InheritHandle, CreationFlags, newEnv, currentDir, Attr)
appName : nom du fichier exécutable
cmdLine : paramètres de ligne de commande
procAttr : Attributs de sécurité des processus
threadAttr : Attributs de sécurité des threads
InheritHandle : indicateurs d'héritage
CreationFlags : indicateurs de création
currentDir : le répertoire actuel du processus
Attr : Attributs du programme créé
Fin du processus :
Vous pouvez utiliser la fonction win32process.TerminateProcess pour terminer le processus créé. Le format de la fonction est le suivant. :
TerminateProcess(handle, exitCode)
handle : handle du processus à utiliser
exitCode : code de sortie du processus
ou utilisez win32event.WaitForSingleObject pour attendre pour que le thread créé se termine. Le format de la fonction est le suivant :
WaitForSingleObject(handle, milisecond)
handle : Le handle du processus à exploiter
miliseconde : L'attente. temps, s'il est -1, continuez d'attendre.
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. Utilisez ctypes pour appeler des fonctions dans kernel32.dll
L'utilisation du module ctypes permet à Python d'appeler des fonctions dans la bibliothèque de liens dynamiques.
Le module ctypes fournit à Python la fonction d'appeler des fonctions dans des bibliothèques de liens dynamiques. À l'aide du module ctypes, vous pouvez facilement appeler une bibliothèque de liens dynamiques écrite en langage C et lui transmettre des paramètres.
Le module ctypes définit les types de données de base en langage C et peut implémenter des structures et des unions en langage C. Le module ctypes peut fonctionner sur plusieurs systèmes d'exploitation tels que Windows, Linux et Mac OS, et est essentiellement multiplateforme.
Exemple :
Appelez la fonction MessageBoxA dans user32.dll sous Windows.
from ctypes import * user32 = windll.LoadLibrary('user32.dll') a = user32.MessageBoxA(0, str.encode('Hello Ctypes!'), str.encode('Ctypes'), 0) print a
Pour plus d'articles techniques liés à Python, veuillez visiter la colonne Tutoriel Python pour apprendre !
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!