Re: [python] cteni odpovedi programu ze stdin
On Sunday 20 of May 2007 18:40:50 beny wrote: Dobry den, mam program, ktery v linuxu zavola jiny program (binarku) s urcitym parametrem. os.system(neco -snecim) chtel bych ale vystup toho programu nacist pythonem a dal pouzivat. Je nejaka cesta jak na to ? Zkousel sem stdin z modulu sys, ale netusim jak na to. Urcite to os.system vyvoval novy shell a tam se jentak pristupovat neda co :P . Dik za info, snad budu zas o neco chytrejsi ___ Python mailing list Python@py.cz http://www.py.cz/mailman/listinfo/python Neco jako tohle: sez = os.popen(prikaz).readlines() -- Linux radek-desktop 2.6.20-15-generic #2 SMP Sun Apr 15 07:36:31 UTC 2007 i686 GNU/Linux ___ Python mailing list Python@py.cz http://www.py.cz/mailman/listinfo/python
Re: [python] cteni odpovedi programu ze stdin
Co mam zkusenost, tak popen() je funkcni moznost. Ale problem je, ze je spis na precteni vystupu pote, co je tento vystup uzavren (spousteny program). Pokud program stale bezi, tj. chcete pracovat interaktivne, neni lehke zjistit, kolik radku (readline()) precist. Pokud totiz budete volat nadbytecne readline(), zpusobi to blokaci procesu. :-( os.system(neco -snecim) chtel bych ale vystup toho programu nacist pythonem a dal pouzivat. Je nejaka cesta jak na to ? Zkousel sem stdin z modulu sys, ale netusim jak na to. Urcite to os.system vyvoval novy shell a tam se jentak pristupovat neda co :P . Dik za info, snad budu zas o neco chytrejsi ___ Python mailing list Python@py.cz http://www.py.cz/mailman/listinfo/python
Re: [python] cteni odpovedi programu ze stdin
select.select() by mohlo pomoct :) ale zalezi od OS -Pôvodná správa- Od: Karel Šrot [mailto:[EMAIL PROTECTED] Komu: python@py.cz Predmet: Re: [python] cteni odpovedi programu ze stdin Co mam zkusenost, tak popen() je funkcni moznost. Ale problem je, ze je spis na precteni vystupu pote, co je tento vystup uzavren (spousteny program). Pokud program stale bezi, tj. chcete pracovat interaktivne, neni lehke zjistit, kolik radku (readline()) precist. Pokud totiz budete volat nadbytecne readline(), zpusobi to blokaci procesu. :-( os.system(neco -snecim) chtel bych ale vystup toho programu nacist pythonem a dal pouzivat. Je nejaka cesta jak na to ? Zkousel sem stdin z modulu sys, ale netusim jak na to. Urcite to os.system vyvoval novy shell a tam se jentak pristupovat neda co :P . Dik za info, snad budu zas o neco chytrejsi ___ Python mailing list Python@py.cz http://www.py.cz/mailman/listinfo/python ___ Python mailing list Python@py.cz http://www.py.cz/mailman/listinfo/python
Re: [python] cteni odpovedi programu ze stdin
select.select() by mohlo pomoct :) ale zalezi od OS -Pôvodná správa- Od: Karel Šrot [mailto:[EMAIL PROTECTED] Komu: python@py.cz Predmet: Re: [python] cteni odpovedi programu ze stdin Co mam zkusenost, tak popen() je funkcni moznost. Ale problem je, ze je spis na precteni vystupu pote, co je tento vystup uzavren (spousteny program). Pokud program stale bezi, tj. chcete pracovat interaktivne, neni lehke zjistit, kolik radku (readline()) precist. Pokud totiz budete volat nadbytecne readline(), zpusobi to blokaci procesu. :-( os.system(neco -snecim) chtel bych ale vystup toho programu nacist pythonem a dal pouzivat. Je nejaka cesta jak na to ? Zkousel sem stdin z modulu sys, ale netusim jak na to. Urcite to os.system vyvoval novy shell a tam se jentak pristupovat neda co :P . Dik za info, snad budu zas o neco chytrejsi ___ Python mailing list Python@py.cz http://www.py.cz/mailman/listinfo/python ___ Python mailing list Python@py.cz http://www.py.cz/mailman/listinfo/python
Re: [python] cteni odpovedi programu ze stdin
On May 21, 8:47 am, Radek Machulka [EMAIL PROTECTED] wrote: On Sunday 20 of May 2007 18:40:50 beny wrote: Dobry den, mam program, ktery v linuxu zavola jiny program (binarku) s urcitym parametrem. os.system(neco -snecim) chtel bych ale vystup toho programu nacist pythonem a dal pouzivat. Je nejaka cesta jak na to ? Zkousel sem stdin z modulu sys, ale netusim jak na to. Urcite to os.system vyvoval novy shell a tam se jentak pristupovat neda co :P . Dik za info, snad budu zas o neco chytrejsi ___ Python mailing list [EMAIL PROTECTED] http://www.py.cz/mailman/listinfo/python Neco jako tohle: sez = os.popen(prikaz).readlines() -- Linux radek-desktop 2.6.20-15-generic #2 SMP Sun Apr 15 07:36:31 UTC 2007 i686 GNU/Linux dik, to je presne to co chci ___ Python mailing list Python@py.cz http://www.py.cz/mailman/listinfo/python
Re: [python] cteni odpovedi programu ze stdin
Ahoj, již mnohokrát zde proběhlo: http://www.py.cz/pipermail/python/2007-March/005717.html cite Jan Martinek 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. /cite S pozdravem Jan Fuchs 21. May (Monday) v 10:47:49 CEST 2007, [EMAIL PROTECTED] napsal(a): sez = os.popen(prikaz).readlines() -- ### # _Žádný program není bezchybný, dokonalý ani nejlepší, # # °v° to samé platí i o lidech a nejen o nich. # # /(_)\ -- Jan Fuchs -- # # ^ ^# #http://www.fuky.org ICQ: 200692177 # ### ___ Python mailing list Python@py.cz http://www.py.cz/mailman/listinfo/python
Re: [python] cteni odpovedi programu ze stdin
Karel Šrot wrote: Co se tyce modulu subprocess a select.select(), nikde jsem nenasel priklad, ktery by ukazoval/vysvetloval to, co potrebuji. Muzete nekdo znaly napsat kratky skript, ktery treba zavola cat, bude na vstupu nacte radek (raw_input), nahradi mezery novymi radky (to proto, aby tech radku bylo vic, tj. nemeli jsme predstavu o jejich poctu), poslal to do vstupu catu, precetl odpoved z vystupu a vypsal ji na obrazovku. Atd., porad dokola. Myslel jsi to takhle? #!/usr/bin/python # -*- coding:utf-8 -*- import subprocess, sys while True: line = sys.stdin.readline() if not line: break lines = line.replace(' ', '\n') process = subprocess.Popen('cat', stdin = subprocess.PIPE, stdout = subprocess.PIPE) process.stdin.write(lines) process.stdin.close() for line in process.stdout: sys.stdout.write(line) #Vypiš na terminál Jan Fuchs napsal(a): Ahoj, již mnohokrát zde proběhlo: http://www.py.cz/pipermail/python/2007-March/005717.html cite Jan Martinek 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. /cite S pozdravem Jan Fuchs Díky za citaci :-) ___ Python mailing list Python@py.cz http://www.py.cz/mailman/listinfo/python
Re: [python] cteni odpovedi programu ze stdin
To Jan Martinek: Nemyslel. :-) Tebou uvadeny priklad totiz posle data pouze jednou, pote zavre vstup a precte cely vystup. Toto neni interaktivni komunikace. To Jan Kundrat: Opravdu je Vami uvadeny kod pouzitelny pro interaktivni komunikaci s procesem? Chtel bych, aby se program choval jako ten kod, co jsem predtim uvedl. Pouze aby nebylo nutne ve funkci read() specifikovat delku dat, chci aby precetl vse, co je dostupne. Jan Martinek napsal(a): Myslel jsi to takhle? #!/usr/bin/python # -*- coding:utf-8 -*- import subprocess, sys while True: line = sys.stdin.readline() if not line: break lines = line.replace(' ', '\n') process = subprocess.Popen('cat', stdin = subprocess.PIPE, stdout = subprocess.PIPE) process.stdin.write(lines) process.stdin.close() for line in process.stdout: sys.stdout.write(line) #Vypiš na terminál ___ Python mailing list Python@py.cz http://www.py.cz/mailman/listinfo/python
Re: [python] cteni odpovedi programu ze stdin
Karel Šrot wrote: To Jan Martinek: Nemyslel. :-) Tebou uvadeny priklad totiz posle data pouze jednou, pote zavre vstup a precte cely vystup. Toto neni interaktivni komunikace. Aha. V tom případě se podívej do zdrojáku modulu subprocess do metody communicate. Ta metoda by se asi dala použít přímo, kdyby na konci vždy nečekala na ukončení procesu (self.wait()), což ty nechceš. Abych pravdu řekl, to čekání na ukončení procesu považuju za nešťastný nápad. Kdyby to tam nebylo, bylo by to flexibilnější. -- Jan Martinek ___ Python mailing list Python@py.cz http://www.py.cz/mailman/listinfo/python
Re: [python] cteni odpovedi programu ze stdin
Karel Šrot wrote: Opravdu je Vami uvadeny kod pouzitelny pro interaktivni komunikaci s procesem? Muzeme si tykat :). Zalezi na tom, co definujes jako interaktivni komunikace a na jake platforme se pohybujes. Napriklad pokud jsi na win32, mas smulu a na neblokovaci cteni z pipe muzes zapomenout (maximalne tak emulovat pres thready). Chtel bych, aby se program choval jako ten kod, co jsem predtim uvedl. Pouze aby nebylo nutne ve funkci read() specifikovat delku dat, chci aby precetl vse, co je dostupne. Aha, to je neco jinyho, nez rekni mi, jestli muzu neco cist. O cem konkretne se bavime, kolik dat je treba cist? Podobne veci umi (napriklad) os.read() (resp. posix.read()), ale prace s tim neni zcela intuitivni, takze je dobre vedet, o co *presne* se snazis. Hezky vecer, -jkt -- cd /local/pub more beer /dev/mouth signature.asc Description: OpenPGP digital signature ___ Python mailing list Python@py.cz http://www.py.cz/mailman/listinfo/python
[python] cteni odpovedi programu ze stdin
Dobry den, mam program, ktery v linuxu zavola jiny program (binarku) s urcitym parametrem. os.system(neco -snecim) chtel bych ale vystup toho programu nacist pythonem a dal pouzivat. Je nejaka cesta jak na to ? Zkousel sem stdin z modulu sys, ale netusim jak na to. Urcite to os.system vyvoval novy shell a tam se jentak pristupovat neda co :P . Dik za info, snad budu zas o neco chytrejsi ___ Python mailing list Python@py.cz http://www.py.cz/mailman/listinfo/python
Re: [python] cteni odpovedi programu ze stdin
A musis to nutne volat z toho programu? Nestacilo by spustit binarku toho programu a vystup presmerovat na tvuj program? Neco jako cat program tvujscript.py On Sun, 20 May 2007 18:40:50 +0200, beny [EMAIL PROTECTED] wrote: Dobry den, mam program, ktery v linuxu zavola jiny program (binarku) s urcitym parametrem. os.system(neco -snecim) chtel bych ale vystup toho programu nacist pythonem a dal pouzivat. Je nejaka cesta jak na to ? Zkousel sem stdin z modulu sys, ale netusim jak na to. Urcite to os.system vyvoval novy shell a tam se jentak pristupovat neda co :P . Dik za info, snad budu zas o neco chytrejsi ___ Python mailing list Python@py.cz http://www.py.cz/mailman/listinfo/python -- Using Opera's revolutionary e-mail client: http://www.opera.com/mail/ ___ Python mailing list Python@py.cz http://www.py.cz/mailman/listinfo/python
Re: [python] cteni odpovedi programu ze stdin
dobry den, zkuste funkci popen, te predate prikaz a ona vrati objekt typu file.. import os f = os.popen(ls -l) lines = f.readlines() ... honza. 20 May 2007 09:40:50 -0700, beny [EMAIL PROTECTED]: Dobry den, mam program, ktery v linuxu zavola jiny program (binarku) s urcitym parametrem. os.system(neco -snecim) chtel bych ale vystup toho programu nacist pythonem a dal pouzivat. Je nejaka cesta jak na to ? Zkousel sem stdin z modulu sys, ale netusim jak na to. Urcite to os.system vyvoval novy shell a tam se jentak pristupovat neda co :P . Dik za info, snad budu zas o neco chytrejsi ___ Python mailing list Python@py.cz http://www.py.cz/mailman/listinfo/python ___ Python mailing list Python@py.cz http://www.py.cz/mailman/listinfo/python