[python] komunikace pomocí pipes

Jaroslav Pachola j_p_misc na centrum.cz
Úterý Březen 23 02:14:42 CET 2004


Zdravim,

par ospalych nocnich myslenek:

1. read() cte cely soubor najednou, takze nejjednodussi zpusob je volat v
cyklu read(1) a pak write() toho jednobajtoveho retezce.

2. Ten oggenc je mozne otevrit pomoci popen3 - tim ziskame jeho stderr, ktery
je mozne periodicky kontrolovat pomoci funkci typu poll() a select().

JP

> Zdravím,
> mám následující problém:
> programuju nástroj pro ripování cédéček (frontend k cdda2wav a oggenc)
> potřebuju, aby se ripovalo i kódovalo zároveň přes rouru:
>
> def feed():
>   (stdin, stdout) = os.popen2('cdda2wav -t10 -D /dev/cdrom - 2>/dev/null',
> 'r') return stdout
>
> def eat(stream):
>   stdin = os.popen("oggenc - >track01.ogg", 'w')
>   stdin.write(stream.read())
>
> data = feed()
> eat(data)
>
> To ale nefunguje, oggenc čeká až cdda2wav skončí, pak se teprve "zapne".
> Zároveň budu muset parsovat výstup oggenc (stderr) kvůli indikaci stavu.
> Vůbec nemám představu jak to udělat, když musím otevřít stdin pro zápis
> a stderr pro čtení.
> Díky za každou pomoc.




Další informace o konferenci Python