2013-01-22 11 views
6

Powiel możliwe:
Calling an external command in PythonJak uruchamianie komend na powłoce przez pytona

chcę uruchomić polecenia w innym katalogu za pomocą Pythona.

Jakie są różne sposoby wykorzystania tego i które są najbardziej wydajne?

Co chcę zrobić to w następujący sposób,

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

Proszę zobaczyć http://stackoverflow.com/questions/89228/calling-an-external-command- w-python, gdzie ten temat był szeroko omawiany. –

+0

próbowałeś czegoś? Czy jakieś badania? – Mike

Odpowiedz

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

np

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

jeśli program ping znajduje się w "/ usr/bin"

Naturalnie ty trzeba zaimportować moduł os.

os.system nie czekać na jakiekolwiek wyjście, jeśli chcesz wyjście, należy użyć

subprocess.call czy coś takiego

+0

ktoś powiedział mi, że mamy subprocess.call, os.system ... który z nich jest przydatny? – mrutyunjay

+0

W zależności od potrzeb. Jeśli chcesz po prostu uruchomić coś w powłoce z tyłu, użyj os.system. Użyj subprocess.call lub coś podobnego, jeśli chcesz poczekać na wyniki procesu .. subprocess.Popen, działa całkiem podobnie jak popen w c – Gjordis

1

Jeśli chcesz mieć większą kontrolę nad tym poleceniem nazywany powłoki (tj dostęp do standardowego wejścia i/lub rur stdout lub uruchomieniem asynchronicznie), można użyć modułu subprocess:

import subprocess 

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

Zobacz również subprocess module documentation.

0

Można użyć Python Subprocess, który oferuje wiele modułów do wykonywania poleceń, sprawdzając wyjścia i komunikaty o błędach itd

5

Naturalnie, jeśli tylko chcesz uruchomić (proste) komendę w powłoce poprzez python to zrobić przez funkcję system modułu os. Na przykład:

import os 
os.system('touch myfile') 

Jeżeli chcesz coś bardziej wyrafinowane, który pozwala na jeszcze większą kontrolę nad realizacją polecenia, należy iść dalej i korzystać z modułu subprocess że inni mają tutaj sugerowane.

W celu uzyskania dalszych informacji, wykonaj poniższe linki: