[Tutor PyCZ] spousteni externich programu a vstupu a vystupy

Roman Miklos RMiklos na pss.sk
Úterý Říjen 10 17:16:24 CEST 2006


Ja by som to urobil tak, ako ked volam prikazy os.

1. import os 

2. do premennej callpgm vyskladat commandline s volanim programu 
extern_pgm
napr: 
callpgm="extern_pgm "+parm+" > "+vysledok_volania
kde:
  premenna parm obsahuje parametre programu
  premenna vysledok_volania nazov suboru do ktoreho presmerujes vystup.

3. rc=os.system(callpgm)
if rc ==0:
   volanie programu bolo uspesne
else:
  pri zavolani programu extern_pgmnastala chyba

4. potom mozes spracovat vystupny subor vysledok_volania

Mozno existuje aj lepsia cesta....




Karel Srot <karel.do.pekla.zajel na seznam.cz> 
Sent by: tutor-bounces na py.cz
10.10.2006 17:54
Please respond to
Konference Tutor portalu PyCZ <tutor na py.cz>


To
Konference Tutor portalu PyCZ <tutor na py.cz>
cc

Subject
Re: [Tutor PyCZ] spousteni externich programu a vstupu a vystupy






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


Mgr. Ing. Roman MIKLÓŠ 
Prvá stavebná sporiteľňa a.s. 
Bajkalská 30, P. O. Box 48 
829 48  Bratislava 25 
Tel.: +421/ 2 / 582 31 174 
Fax: +421/ 2 / 582 31 109 
------------- další část ---------------
HTML příloha byla odstraněna...
URL: http://www.py.cz/pipermail/tutor/attachments/20061010/b5850d10/attachment.htm 


Další informace o konferenci Tutor