[python] Jak udelat wait u popen.

Jan Martinek honza na dp.fce.vutbr.cz
Úterý Březen 20 16:06:21 CET 2007


David Michal wrote:
> Zdravim,
> 
>  
> 
> Zapasim s pouzitim os.popen. Potreboval bych vzdy pockat na dokonceni
> subprocessu a pak teprve pracovat s jeho vystupem. V dokumentaci jsme
> nasel ze existuji tridy Popen3 a 4 ktere maji metodu wait(). Ale v
> modulu os je nemuzu najit. Jak si mam zadefinovat neco takoveho:
> 
>  
> 
> a = os.popen('echo ahoj')
> 
> a.wait()
> 
> print a[1].readlines()
> 
>  
> 
> ?
> 
>  
> 
> Diky,
> 
> David
> 

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.
Můžeš zkusit to napsat takhle:

import subprocess
command = ['echo', 'ahoj']
echo = subprocess.Popen(command, stdout = subprocess.PIPE)
print echo.stdout.readlines()

Kdybys náhodou chtěl opravdu čekat na ukončení externího programu, tak k 
tomu slouží metoda wait, např.
echo.wait()
A vůbec - napiš přesně, čeho chceš dosáhnout a jaký externí program 
budeš pouštět. Třeba to ani nebude třeba :-)

Jan Martinek


Další informace o konferenci Python