2011-07-11 15 views
48

Bir python komut dosyasına veya df gibi bazı kabuk komutlarından çıktı almak istiyorum. commands.getoutput('ls')'un kullanımdan kaldırıldığını ancak subprocess.call('ls')'un yalnızca geri dönüş kodunu alacağını görüyorum.python getoutput() alt işlemdeki karşılığı

Umarım basit bir çözüm vardır.

cevap

70

Kullanım subprocess.Popen: işlemi sonlandırır kadar bloklar iletişim

import subprocess 
process = subprocess.Popen(['ls', '-a'], stdout=subprocess.PIPE) 
out, err = process.communicate() 
print(out) 

Not. Sonlandırmadan önce çıktıya ihtiyacınız varsa process.stdout.readline() kullanabilirsiniz. Daha fazla bilgi için documentation'a bakın.

+0

subprocess' örnekler 'Python 2.7 sürümü için doğru akım doc link: http://docs.python.org/library/subprocess.html#replacing-older-functions-with-the -subprocess-modülü; Python 3.2 için, http://docs.python.org/py3k/library/subprocess.html#replacing-older-functions-with-the-subprocess-module –

+5

Muhtemelen subprocess.communicate() yöntemini değiştirerek değiştirmeniz gerekir. communication() - ayrıca process.returncode – Cinquo

+0

işlemini yaparak alt işlem çıkış koduna da gereksinim duyabiliyordum. İşlem yerine alt işlem yazdığımı fark etmedim. Sabit. –

İlgili konular