2013-04-03 14 views
8

Python betiğimde komut satırında bir yürütülebilir dosyayı iletiyorum. Bazı hesaplamalar yapıyorum ve daha sonra bu hesaplamaların sonucunu STDIN üzerinde yürütülebilir dosyaya göndermek istiyorum. Bitirdiğinde, yürütülebilir dosyanın sonucunu STDOUT'dan geri almak istiyorum. Ben result yazdırdığınızdaPython Popen, stdin üzerinde işlemek için mesaj gönderiliyor

ciphertext = str(hex(C1)) 
exe = popen([sys.argv[1]], stdout=PIPE, stdin=PIPE) 
result = exe.communicate(input=ciphertext)[0] 
print(result) 

Hiçbir şey, değil Hiçbiri, boş bir satır olsun. Ben aynı yürütülebilir dosyayı, daha önce hesaplanmış olan aynı sonuca sahip komut satırında '>' kullanarak aynı şeyi tekrarladığımdan, verilerle birlikte çalıştığından eminim.

+0

hatta bir satır olmadan çalıştırılabilir çalıştığını test ettiklerini Emin misiniz girişin sonu? ("echo" bir satır ekleyecektir, "echo -n" olmaz.) – svk

+0

@svk yep, –

cevap

12

Bir çalışma örneği

#!/usr/bin/env python 
import subprocess 
text = 'hello' 
proc = subprocess.Popen(
    'md5sum',stdout=subprocess.PIPE, 
    stdin=subprocess.PIPE) 
proc.stdin.write(text) 
proc.stdin.close() 
result = proc.stdout.read() 
print result 
proc.wait() 

execuable <params.file> output.file” olarak aynı şeyi almak için, bunu:

#!/usr/bin/env python 
import subprocess 
infile,outfile = 'params.file','output.file' 
with open(outfile,'w') as ouf: 
    with open(infile,'r') as inf: 
     proc = subprocess.Popen(
      'md5sum',stdout=ouf,stdin=inf) 
     proc.wait() 
+0

Yine aynı sonuç, boş satır. Popen aslında komut satırındaki '<' ile aynı mı? Bunu yeniden oluşturmaya çalışıyorum: oracle.exe output.file –

İlgili konular