2013-01-22 2 views
6

Mögliche Duplizieren:
Calling an external command in PythonWie Befehle auf Shell durch Python laufen

Ich möchte Befehle in ein anderes Verzeichnis laufen Python verwenden.

Was sind die verschiedenen Möglichkeiten dafür und welche ist die effizienteste?

Was möchte ich tun, ist wie folgt,

cd dir1 
execute some commands 
return 
cd dir2 
execute some commands 
+1

Bitte sehen http://stackoverflow.com/questions/89228/calling-an-external-command- In-Python, wo dieses Thema ausführlich diskutiert wurde. –

+0

hast du irgendwas versucht? Recherchieren? – Mike

Antwort

1
os.system("/dir/to/executeble/COMMAND") 

zum Beispiel

os.system("/usr/bin/ping www.google.com") 

wenn Ping-Programm in "/ usr/bin" befindet sich

Sie natürlich müssen das OS-Modul importieren.

os.system wartet nicht auf einen beliebigen Ausgang, wenn Sie ausgeben möchten, sollten Sie

subprocess.call oder so ähnlich

+0

jemand sagte mir, wir haben subprocess.call, os.system ... welches ist nützlich? – mrutyunjay

+0

Je nachdem, was Sie brauchen. Wenn Sie etwas in der Shell auf der Rückseite starten möchten, verwenden Sie os.system. Verwenden Sie subprocess.call oder etwas Ähnliches, wenn Sie auf die Ergebnisse des Prozesses warten möchten. Subprocess.Popen funktioniert ähnlich wie popen in c – Gjordis

1

verwenden Wenn Sie mehr Kontrolle über die genannte Shell-Befehl (dh zugreifen möchten zu stdin und/oder stdout Rohre oder asynchron) starten, können Sie das subprocess Modul verwenden:

import subprocess 

p = subprocess.Popen('ls -al', shell=True, stdout=subprocess.PIPE) 
stdout, stderr = p.communicate() 

Siehe auch subprocess module documentation.

0

Sie können Python Subprocess verwenden, die viele Module bieten Befehle auszuführen, Ausgänge Überprüfung und Fehlermeldungen usw.

5

Natürlich, wenn Sie nur ein (einfaches) Kommando auf der Shell über Python ausführen möchten, können Sie es tun über die system Funktion des os Moduls. Zum Beispiel:

import os 
os.system('touch myfile') 

Wenn Sie wollen etwas anspruchsvollere, die für noch mehr Kontrolle über die Ausführung des Befehls erlaubt, gehen Sie vor und verwenden Sie das subprocess Modul, das hier andere vorgeschlagen haben.

Für weitere Informationen folgen Sie diesen Links: