Maison  >  Article  >  développement back-end  >  Comment appeler d'autres programmes en python

Comment appeler d'autres programmes en python

尚
original
2019-07-03 14:02:4610243parcourir

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

Comment appeler dautres programmes en python

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn