2013-01-22 18 views
6

Olası Çoğalt kabuk üzerinde komutları çalıştırma:
Calling an external command in Pythonpiton yoluyla

Ben piton kullanarak başka dizinde komutları çalıştırmak istediğiniz

.

Bunun için kullanılan çeşitli yollar nelerdir ve hangisi en verimli olanıdır? aşağıdaki gibi

Ne yapmak istiyorum örneğin

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

http://stackoverflow.com/questions/89228/calling-an-external-command- bakın Bu konunun kapsamlı bir şekilde tartışıldığı python. –

+0

Bir şey denedin mi? Araştırma var mı? – Mike

cevap

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

olduğu

ping programı "/ usr/bin" Doğal

Eğer bulunuyorsa

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

os modülünü içe aktarmanız gerekir.

os.system çıktıyı isterseniz (yani erişim denilen kabuk komutu üzerinde daha fazla kontrol istiyorsanız, o

+0

birisi bana subprocess.call, os.system var ... hangisi yararlı olduğunu söyledi? – mrutyunjay

+0

İhtiyacınıza bağlı olarak. Arkadaki kabukta bir şeyler başlatmak istiyorsanız, os.system'i kullanın. Altprocess.call kullanın veya işlemden sonuç beklemek istiyorsanız benzer bir şey .. altprocess.Popen, c gibi pop gibi oldukça benzer çalışır – Gjordis

1

gibi

subprocess.call falan kullanmalıdır, herhangi çıktı beklemez

import subprocess 

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

da subprocess module documentation bakınız: stdin ve/veya stdout'u boruları veya uyumsuz çalıştırmadan) girerek, subprocess modülünü kullanabilirsiniz.

0

sadece piton aracılığıyla kabuğunda bir (basit) komutunu çalıştırmak istiyorsanız hata iletileri vb Doğal

5

çıkışları kontrol komutları yürütmek ve almak için birçok modül sunuyor Python Subprocess kullanabilirsiniz, bunu os modülünün system işlevi aracılığıyla. Örneğin:

import os 
os.system('touch myfile') 

Komut çalıştırılmadan üzerinde daha fazla kontrol sağlayan daha gelişmiş bir şey, devam edin ve burada başkaları artan subprocess modülü kullanmak isteyeyim edin.

Ayrıntılı bilgi için

takip bu bağlantıları: