2013-10-08 9 views
23

olarak alın. Python'da os veya alt işlemlerini kullanarak bazı sistem komutlarını çalıştırabilirim. Sorun şu ki çıkışı bir dizge olarak alamıyorum. Örneğin:, sistem komutunun çıktısını

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

ben işlev CHECK_OUT yok alt sürecin eski bir sürümünü ve benim kod bir sunucu I çalışacağını beri bu modülü güncellemek için gerektirmeyen bir çözümü tercih ediyorum tam yönetici haklarına sahip değilsiniz.

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

yeni yolu (> piton 2.6) bu yapmaktır subprocess kullanmak:

+0

'popen' BIPE' ye ihtiyacınız var, sistem büyük olasılıkla process termination status döndürüyor –

+0

@GrijeshChauhan Ben de denedim ama işe yaramazdım. Bir örnek gösterebilir misin? – S4M

+0

Hangi Python sürümü? – codeape

cevap

62

Kullanım os.popen()

Bu sorun önemsiz görünüyor, ama ben önemsiz bir çözüm bulamadım

proc = subprocess.Popen('ls', stdout=subprocess.PIPE) 
tmp = proc.stdout.read() 
+0

Altprocess kullanarak bir örnek yararlı olacaktır :) –

+0

Alt işlemle ilgili bir örnek eklendi –

+0

tmp = os.popen ("ls") read() iyi. Python 2.6 var. – S4M