2013-03-01 23 views
15

Aşağıdaki toplu iş komutunu python altişlemci modülünü kullanarak nasıl çoğaltabilirim? Başka bir deyişleDosyaları altprogram olarak stdin ve stdout olarak kullanma

myprogram <myinput.in> myoutput.out 

, nasıl standart çıktı olarak standart giriş ve myoutput.out olarak myinput.in içeriğini kullanarak myprogram çalıştırırım?

cevap

24

şu çalışmalıdır:

myinput = open('myinput.in') 
myoutput = open('myoutput.out', 'w') 
p = subprocess.Popen('myprogram.exe', stdin=myinput, stdout=myoutput) 
p.wait() 
myoutput.flush() 
+0

Bu, ihtiyacım olana yakın görünüyor. Hataların oluşup oluşmadığını nasıl anlarım? –

+0

Nevermind. stderr = subprocess.PIPE, ardından, stderr: print error –

+0

"myoutput = open ('myoutput.out'. 'w') satırında parametreler bir', 'değil,' .' – flagg19

-5

alt süreç olarak bir dosya açar. Bu engelleme çağrıdır. Böylece, dosya açık olana kadar denetim sonraki satıra gitmeyecek.

ss=subprocess.Popen(FileName,shell=True) 
ss.communicate() 
İlgili konular