Comment stocker de l'os.system() de sortie dans une variable ou d'une liste en python
J'essaie d'obtenir la sortie d'une commande par le faire en ssh sur un serveur distant à l'aide de commande ci-dessous.
os.system('ssh user@host " ksh .profile; cd dir; find . -type f |wc -l"')
De sortie de cette commande est 14549 0
pourquoi il y a un zéro dans la production ?
est-il possible de stocker le résultat dans la variable ou de la liste ? J'ai essayé de l'affectation de sortie à une variable et une liste aussi, mais je suis seulement 0 dans la variable. Je suis à l'aide de python 2.7.3.
- Si vous êtes à l'aide de Python 2.7, puis utilisez le
subprocess
module au lieu deos.system
. - double possible de Comment faire pour enregistrer les données en provenance de "sudo dpkg -l" Ubuntu terminal par l'utilisation de python et Comment faire pour enregistrer les données en provenance de "sudo dpkg -l" Ubuntu terminal par l'utilisation de python
Vous devez vous connecter pour publier un commentaire.
Il y a beaucoup de bonnes DONC les liens sur celui-ci. essayez L'exécution de la commande du shell à partir de Python et de la capture de la sortie ou Assigner la sortie de l'os.système à une variable et l'empêcher d'être affiché sur l'écran pour les débutants. En bref
Le shell=True indicateur doit être utilisé avec prudence:
De la documentation:
Avertissement
Invoquant le système shell shell=True peut être un risque de sécurité si elle est combinée avec douteuses en entrée. Voir l'avertissement en vertu de l'Fréquemment Utilisé des Arguments pour les détails.
Voir pour plus d'info: http://docs.python.org/2/library/subprocess.html
vous pouvez utiliser
os.popen().read()
À ajouter à la réponse de Paul (à l'aide de sous-processus.check_output):
J'ai légèrement réécrit pour faciliter le travail avec des commandes qui peuvent générer des erreurs (par exemple, en appelant "git status" dans un non-répertoire git va lancer code de retour de 128 et une CalledProcessError)
Voici mon travail de Python 2.7 exemple:
Si vous appelez à l'os.system() dans un shell interactif, os.système() affiche la sortie standard de la commande ('14549", le wc-l sortie), puis l'interprète imprime le résultat de l'appel de la fonction elle-même (0, éventuellement, un peu fiable code de sortie de la commande). Un exemple avec une simple commande: