Maison > Article > développement back-end > Comment exécuter des programmes externes avec des espaces dans le chemin à partir de Python ?
Exécuter des programmes externes à partir de Python avec des espaces dans le chemin
En Python, la fonction os.system peut être utilisée pour exécuter des programmes externes. Cependant, des problèmes peuvent survenir lors de l'exécution de programmes dont les chemins contiennent des espaces. Cet article explore le problème et propose une solution à l'aide du module de sous-processus.
Défis avec os.system
La fonction os.system interprète la chaîne d'entrée comme une commande pour être exécuté par le shell. Lorsque des espaces sont présents dans le chemin d'accès au programme, le shell peut les interpréter comme des délimiteurs de commandes, ce qui entraîne des erreurs telles que « commande introuvable ».
Gestion des espaces avec échappement
Échapper au chemin du programme avec des guillemets doubles peut parfois résoudre le problème. Cependant, l'ajout de paramètres supplémentaires à la commande peut à nouveau la casser.
Mêmes guillemets, syntaxe différente
Échanger les guillemets simples et doubles lors de la délimitation du chemin du programme (par exemple, "'C:Tempa b cNotepad.exe'") ne résout pas le problème et peut entraîner des erreurs "la syntaxe du nom de fichier est incorrecte".
Entrez le sous-processus
Pour Pour éviter les complexités de l'échappement du shell, le module de sous-processus fournit une solution plus robuste. La fonction subprocess.call prend une liste d'arguments plutôt qu'une chaîne. Les arguments sont facilement délimités par des espaces blancs dans la liste.
Exemple de script utilisant un sous-processus
Le script suivant utilise un sous-processus pour exécuter le Bloc-notes avec un paramètre :
<code class="python">import subprocess subprocess.call(['C:\Temp\a b c\Notepad.exe', 'C:\test.txt'])</code>
Ce script exécutera correctement le Bloc-notes et attendra qu'il se termine sans rencontrer de problèmes de syntaxe dus aux espaces dans le chemin.
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!