Exécution de commandes Bash en Python
Problème
Un script Python ne parvient pas à exécuter une commande Bash à l'aide de os.system(). Le message d'erreur indique qu'un module Python n'est pas trouvé.
Réponse
Pour résoudre ce problème et améliorer la compréhension de l'exécution des commandes Bash en Python, considérez les aspects suivants :
-
Préférer le module de sous-processus : Utilisez subprocess.run() ou des méthodes associées telles que subprocess.check_call() pour une meilleure gestion et un meilleur contrôle des erreurs. Évitez d'utiliser os.system().
-
Utilisez text=True : Définissez text=True pour décoder la sortie standard et l'erreur en chaînes Unicode.
-
Comprendre shell=True vs shell=False :
- shell=True passe une chaîne au shell pour exécution.
- shell=False fournit une liste d'arguments au système d'exploitation, en contournant le shell.
En général, évitez de mélanger ces options en passant une liste de chaînes avec shell=True ou une seule chaîne avec shell=False.
-
Considérez les différences entre sh et Bash :
- Le sous-processus utilise /bin/sh par défaut, sauf si vous spécifiez executable='/bin/bash', ce qui est nécessaire pour la syntaxe Bash uniquement.
-
Éviter de changer de parent Environnement :
- Un processus enfant ne peut pas modifier l'environnement du parent, y compris la définition de variables ou la modification du répertoire de travail. Utilisez os.environ[] ou transmettez des variables d'environnement au processus enfant avec env=.
-
Évitez d'exécuter Python à partir de Python :
- Envisagez d'importer l'autre module Python et d'appeler ses fonctions directement au lieu d'exécuter le script en tant que sous-processus.
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!