2016-03-28 12 views
0

Belirli bir kabuk komutunun etrafına bir sarıcı eklemek istiyorum. Bu sadece Linux'ta çalışacak ve çapraz platform desteğini umursamıyorum. Bu kod çalışıyor, ancak bunu başarmanın daha iyi bir yolu var mı? Yoksa kendimi tuhaf davranışlara açıyor muyum?Basit Python kabuk sarmalayıcı komut dosyası (os.execv kullanarak)

import os 
import sys 

# Do my personal validation here 
do_some_validation(sys.argv) 

# Now call the real program 
os.execv('/usr/bin/some-command', sys.argv) 

Teşekkürler! os sadece bash başka yere fırlatır oysa

cevap

1

Sen, bir komutun yürütülmesi üzerinde daha fazla kontrole sahip olmasıyla subprocess

import subprocess 
subprocess.call(['/usr/bin/some-command', arg1, arg2]) 

subprocess bir bakıma os daha iyidir kullanabilir.

+0

Alt işlem özellikle bana ne önerir? Bunu yayınlamadan önce googling yaparken, yorumunuzun bir varyasyonunu her yerde gördüm, ancak bu durumda, paketlemeyi gerçekleştirdiğim programla değiştirmek istiyorum. Dönüş kodunu almama gerek yok, hata/hata yapma, hata işleme, vb. – user3827132

+0

Sizin durumunuzda, elbette os ile kalabilirsiniz. Alt süreçlere geçmenize gerek yok, ama gelecekte senaryonuzu genişleteceksen dönüş kodlarına, borulara, vb. Ihtiyaç duyacaksın. –

İlgili konular