web-dev-qa-db-fra.com

en python, récupère le résultat de la commande système sous forme de chaîne

Dans python, je peux exécuter une commande système à l'aide de os ou de sous-processus. Le problème est que je ne peux pas obtenir le résultat sous forme de chaîne. Par exemple:

>>> tmp = os.system("ls")
file1 file2
>>> tmp
0

J'ai une ancienne version de sous-processus qui n'a pas la fonction check_out, et je préférerais une solution qui ne nécessite pas de mettre à jour ce module car mon code fonctionnera sur un serveur et ne dispose pas de tous les droits d'administrateur.

Ce problème semble trivial, mais je ne pouvais pas trouver une solution triviale

27
S4M

Utilisez os.popen() :

tmp = os.popen("ls").read()

La méthode la plus récente (> python 2.6)) consiste à utiliser subprocess :

proc = subprocess.Popen('ls', stdout=subprocess.PIPE)
tmp = proc.stdout.read()
68
Hari Menon