Petr Vaněk wrote: > Dne čtvrtek 23 březen 2006 15:20 Leos Pol napsal(a): > >>Mozna jsem presne neporozumel problemu, ale na spousteni externich >>binarek lze pouzit treba os.popen*. >> >> import os >> fd = os.popen3('dot -Tpng -o %s.png' % fname) >> fd[2].read() > > > ajaj, tu jedinou radku v dokumentaci jsem prehledl. Jen abych se ujistil: > * kdyz externi prog. sebehne v poradku, vsechno jede dal a v file > deskriptorech mam stdout, err atd. > * kdyz ale shell prog. nenajde, popr. prg. spadne s chybou, nezjistim to > jinak, nez pochybnym parsovanim spolecneho vystupu ze stdout_stderr. Pochopil > jsem to dobre? > >
Opravdu se nechci vnucovat s tím modulem subprocess, ale ve srovnání s os.popen3 má jisté výhody: - parametry předává jako "list", takže nevzniknou problémy s mezerami v názvu souboru atd. - když nenajde binárku, tak způsobně vyhodí výjimku Například tento program: #!/usr/bin/env python import subprocess, os prog_name = 'false' try: process = subprocess.Popen([prog_name]) retvalue = process.wait() if retvalue: print 'program se sice povedlo pustit, ale neco selhalo' else: print 'vse OK' except OSError, error: print 'nepovedlo se ho pustit' print error otestuje všechny situace - jestli se program povedlo spustit a pokud ano, tak se ještě podívá na návratový kód. _______________________________________________ Python mailing list Python@py.cz http://www.py.cz/mailman/listinfo/python