2010-08-01 7 views
1

J'ai une question concernant l'utilisation de Python. Comment exécuter une commande de ligne de commande en utilisant Python?Exécuter une commande de terminal et enregistrer les valeurs renvoyées à l'aide de Python/Django?

Et après l'exécution de la commande, comment puis-je enregistrer les valeurs renvoyées?

Par exemple:

[email protected]:~$: ls -l 
drwxr-xr-x 3 root root 4096 ..[etc] home 
-rw-r--r-- 1 user user 357 ..[etc] examples.doc 

Alors ce que je compte faire, est d'exécuter la commande ls -l et que sauver la réponse dans une base de données en utilisant Python.

J'ai l'intention d'implémenter l'exemple ci-dessus dans Django.

Puis-je savoir si c'est possible? Quel genre de commandes je ne peux pas exécuter?

Comment l'implémenter?

Tous les liens, tutoriels, conseils sont plus que bienvenus!

Cordialement.

Répondre

0

Jetez un coup d'œil à la fonction os.system. Avec cet appel, vous serez en mesure d'exécuter une commande comme:

import os 
os.system('ls -l > file.txt') 

http://docs.python.org/library/os.html#os.system

+0

La réponse semble être la bonne voie à suivre. Je voterai pour sa réponse parce que sa solution a un accès direct à stdout et stderr – djondal

2

Vous devez utiliser subprocess - http://docs.python.org/library/subprocess.html et http://docs.python.org/library/subprocess.html:

from subprocess import Popen, PIPE 
stdout, stderr = Popen(['echo', 'Hello World!'], shell=False, stdout=PIPE) 
print stdout.split('\n') 
+0

semble très bien. comment pourrais-je stocker le résultat dans une base de données? – DjangoRocks

+0

Pour stocker dans une base de données, passez par le tutoriel django: http://docs.djangoproject.com/en/dev/intro/tutorial01/ – twneale

1

Vous ne posez pas réellement la bonne question ici. Comme d'autres l'ont dit, os.system ou subprocess.Popen sont les réponses à la question 'comment puis-je exécuter une commande shell en Python.

Mais ce n'est pas la question que vous êtes vraiment demandant. Qu'est-ce que vous voulez vraiment savoir, comment puis-je obtenir les fichiers dans un répertoire? Et la réponse à cette question est d'utiliser os.listdir(). Voir the documentation.

+0

oui spot on. Merci! – DjangoRocks

2

Reece de answer fonctionne presque, mais vous devez ajouter Popen avec .communicate()

il serait donc:

from subprocess import Popen, PIPE 
stdout, stderr = Popen(['echo', 'Hello World!'], shell=False, stdout=PIPE).communicate() 

Ou en Python 2.7, vous pouvez utiliser:

from subprocess import check_output 
stdout = check_output(['echo', 'Hello World!'], shell=False) 

Voir le sous-processus: http://docs.python.org/library/subprocess.html

Questions connexes