7
votes

En Python, quelle est la meilleure façon d'exécuter une commande Linux locale stockée dans une chaîne?

Dans Python, quel est le moyen le plus simple d'exécuter une commande Linux locale stockée dans une chaîne tout en accrochant des exceptions potentielles qui sont projetées et enregistrant la sortie de la commande Linux et de toutes les erreurs attrapées dans un fichier journal commun? xxx


0 commentaires

3 Réponses :


0
votes

Subprocess est le meilleur module pour cela.

Vous avez différentes façons de vous exécuter des scripts, dans des threads séparés ou de la même attente de la fin de chaque commande. Vérifiez que les documents entiers sont plus que utiles:

http://docs.python.org/library/subprocess.html


0 commentaires

16
votes

Utilisation du Le module de sous-processus est la bonne façon de le faire:

import subprocess
logfile = open("/dev/log", "w")
output, error = subprocess.Popen(
                    ["ls"], stdout=logfile,
                    stderr=subprocess.PIPE).communicate()


2 commentaires

N'importe quelle idée pourquoi cette approche semble fonctionner pour des cordes CMD comme "LS" et "Dir" mais génère une OsError pour des cordes telles que "Python -h" et "apt-get -h"?


@Chris, bien sûr. Je vais ajouter les détails à la réponse



-3
votes

Consultez les commandes Module. xxx

Spécification de Exception comme classe d'exception après sauf Python attraper toutes les exceptions possibles.


1 commentaires

Il y aurait beaucoup plus d'utilisation si vous avez donné une raison pour laquelle vous êtes en désaccord avec le commentaire avant de descendre. À quoi veux-tu en venir?