[Tutor PyCZ] spousteni externich programu a vstupu a vystupy

Jiri Vit jirivit na jirivit.com
Úterý Říjen 10 17:33:05 CEST 2006


Je toto co hledas?

http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/440554

Zdravi 

Jiri Vit

---------- Original Message -----------
From: Karel Srot <karel.do.pekla.zajel na seznam.cz>
To: Konference Tutor portalu PyCZ <tutor na py.cz>
Sent: Tue, 10 Oct 2006 18:13:36 +0200
Subject: Re: [Tutor PyCZ] spousteni externich programu a vstupu a vystupy

> kazdopadne diky za snahu.. :-)
> opravdu chci, aby programy komunikovaly pomoci roury. Mel jsem to 
> udelane tak, ze
> pomoci popen4() spustim externi program a ziskam std. vstup a std. a 
> chybovy vystup. Na vstup neco posilam a z vystupu ctu. A tak stale 
> dokola. Problem je v tom, ze ten externi program nekdy nevrati zadny 
> vystup, tedy ja mu neco poslu, ale on neudela nic. Nasledny pokus o 
> cteni readline() tedy zpusobi deadlock. Potreboval bych tedy 
> zkontrolovat, zda externi program neco poslal a teprve pokud ano,
>  tak to nacist.
> 
> Ten objekt stringIO by mohl pomoci, protoze, aspon jak to chapu, 
> umoznuje nacitat prubezne z neuzavreneho souboru. Ale nevim, jak 
> externimu programu predhodit tento objekt, aby jej pouzil jako vystup..
> 
> Karel
> 
> Jiří Popek napsal(a):
> > myslim, ze budem muset komunikovat konkretneji - rozepis se vice o 
> > problemu
> >
> > std vstup i vystup si muzes predstavit jako normalni soubor -
> > funkce print napr. posila svuj vystup na stdout - nastavenim stdout do 
> > souboru bude do neho zapsan vsechen std vystup, ktery bude vysledkem 
> > souboru spusteneho napr. pomoci execfile()
> >
> > stejne by mel fungovat i stdin, ze ktereho bude externi program cist 
> > tak, jako bychom to psali pomoci klavesnice - je-li tedy ocekavam 
> > vstup pomoci raw_input(), bude tento nacten defaultne ze sys.stdin.read()
> >
> > Problem ktery popisujes ty ale spise vypada na to, ze chces, aby dva 
> > programy komunikovaly pomoci "roury", coz by se mnout naznacenym 
> > zpusobem melo taky dat realizovat.
> > J.
> >
> > On 10/10/06, *Karel Srot* <karel.do.pekla.zajel na seznam.cz 
> > <mailto:karel.do.pekla.zajel na seznam.cz>> wrote:
> >
> >     Asi jsem to nepochopil. Tim sys.stdout mohu napriklad nastavit, aby
> >     standardni vystup meho programu sel do souboru. Ale ja chci
> >     zpracovavat
> >     vystup externiho programu, ktery z programu teprve poustim. To jde
> >     takto
> >     take? A jak tedy nastavim vstup/vystup pro externi program?
> >
> >     Karel
> >
> >     Jiří Popek napsal(a):
> >     > k tomu slouzi
> >     >
> >     > import sys
> >     > sys.stdout
> >     > sys.stderr
> >     > sys.stdin
> >     >
> >     > temto objektum muzes priradit napr. StringIO objekt nebo nejaky
> >     soubor
> >     > a tvuj program ktery spoustis jej bude pouzivat jako klasicky
> >     > vystup/vstup. Na konci nezapomen nastavit tyto hodnoty na puvodni.
> >     > J.
> >     >
> >     > On 10/10/06, *Karel Srot* < karel.do.pekla.zajel na seznam.cz
> >     <mailto:karel.do.pekla.zajel na seznam.cz>
> >     > <mailto:karel.do.pekla.zajel na seznam.cz
> >     <mailto:karel.do.pekla.zajel na seznam.cz>>> wrote:
> >     >
> >     >     Zdravim vsechny,
> >     >     mam nasledujici dotaz. zkousel jsem najit odpoved v nejake
> >     dokumentaci
> >     >     ci prikladech, ale jsem z toho tulpachovej.
> >     >
> >     >     Mam externi program. Ten chci z pythonu spustit, posilat mu
> >     neco na
> >     >     vstup a prebirat vystup. Zatim jsem pouzil funkci popen4.
> >     Vim, ze
> >     >     vhodnejsi by bylo pouzit modul subprocess, ale v tom se moc
> >     >     neorientuju.
> >     >       Navic mi jde o to, najit funkcni reseni a pochopit ho,
> >     takze klidne
> >     >     piste reseni pomoci subprocess.
> >     >
> >     >     Problem je v tom, ze ten program ne vzdy da vystup. Takze ja
> >     mu muzu
> >     >     poslat data a on nemusi vubec odpoved. Upravit tento program
> >     nelze,
> >     >     proste to tak funguje. Jak zjistim, ze program neco poslal
> >     na vystup?
> >     >     Nelze pouzit readline ci read, protoze to zpusobi cekani na
> >     konec
> >     >     radku/souboru. Jak tedy provest kontrolu toho, ze muzu neco
> >     cist a
> >     >     pak
> >     >     to teprve nacist.
> >     >
> >     >     Dalsi dotaz je podobny. Kdybych presmeroval vystup externiho
> >     >     programu do
> >     >     souboru a v pythonu pak z toho souboru cetl, tak fungovalo
> >     by to? Tedy
> >     >     ja bych programu neco poslal, on by to vypsal do souboru a
> >     ja bych
> >     >     ten
> >     >     soubor prubezne cetl? Resp. jak bych ho mel cist?
> >     >
> >     >     Diky za odpoved, snad jsem to napsal srozumitelne.
> >     >
> >     >     Karel
> >     >     _______________________________________________
> >     >     Tutor mailing list
> >     >     Tutor na py.cz <mailto:Tutor na py.cz> <mailto:Tutor na py.cz
> >     <mailto:Tutor na py.cz>>
> >     >     http://www.py.cz/mailman/listinfo/tutor
> >     >
> >     >
> >     >
> >     ------------------------------------------------------------------------
> >
> >     >
> >     > _______________________________________________
> >     > Tutor mailing list
> >     > Tutor na py.cz <mailto:Tutor na py.cz>
> >     > http://www.py.cz/mailman/listinfo/tutor
> >     <http://www.py.cz/mailman/listinfo/tutor>
> >
> >     _______________________________________________
> >     Tutor mailing list
> >     Tutor na py.cz <mailto:Tutor na py.cz>
> >     http://www.py.cz/mailman/listinfo/tutor
> >     <http://www.py.cz/mailman/listinfo/tutor>
> >
> >
> > ------------------------------------------------------------------------
> >
> > _______________________________________________
> > Tutor mailing list
> > Tutor na py.cz
> > http://www.py.cz/mailman/listinfo/tutor
> 
> _______________________________________________
> Tutor mailing list
> Tutor na py.cz
> http://www.py.cz/mailman/listinfo/tutor
------- End of Original Message -------



Další informace o konferenci Tutor