[python] cteni odpovedi programu ze stdin

Jan Martinek honza na dp.fce.vutbr.cz
Pondělí Květen 21 18:09:14 CEST 2007


Karel Šrot wrote:
> Co se tyce modulu subprocess a select.select(), nikde jsem nenasel 
> priklad, ktery by ukazoval/vysvetloval to, co potrebuji. Muzete nekdo 
> znaly napsat kratky skript, ktery treba zavola "cat", bude na vstupu 
> nacte radek (raw_input), nahradi mezery novymi radky (to proto, aby tech 
> radku bylo vic, tj. nemeli jsme predstavu o jejich poctu), poslal to do 
> vstupu "catu", precetl odpoved z vystupu a vypsal ji na obrazovku. Atd., 
> porad dokola. 

Myslel jsi to takhle?

#!/usr/bin/python
# -*- coding:utf-8 -*-
import subprocess, sys

while True:
     line = sys.stdin.readline()
     if not line: break
     lines = line.replace(' ', '\n')
     process = subprocess.Popen('cat', stdin = subprocess.PIPE,
                                       stdout = subprocess.PIPE)
     process.stdin.write(lines)
     process.stdin.close()
     for line in process.stdout:
         sys.stdout.write(line) #Vypiš na terminál


> Jan Fuchs napsal(a):
>> Ahoj,
>> již mnohokrát zde proběhlo:
>>
>>   http://www.py.cz/pipermail/python/2007-March/005717.html
>>
>>   <cite "Jan Martinek">
>>   Tři z pěti pythonistů doporučují navždy zapomenout na
>>   
>>   os.system
>>   os.spawn*
>>   os.popen*
>>   popen2.*
>>   commands.*
>>   
>>   a použít raději modul subprocess, který nahrazuje (a doplňuje) všechny 
>>   výše uvedené metody.
>>   </cite>
>>
>>          S pozdravem Jan Fuchs
>>

Díky za citaci :-)


Další informace o konferenci Python