[Tutor PyCZ] spousteni externich programu a vstupu a vystupy

Jiří Popek jiri.popek na gmail.com
Úterý Říjen 10 17:07:12 CEST 2006


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> 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>> 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>
> >     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
>
------------- další část ---------------
HTML příloha byla odstraněna...
URL: http://www.py.cz/pipermail/tutor/attachments/20061010/88a362e9/attachment.htm 


Další informace o konferenci Tutor