Re: [python] cteni odpovedi programu ze stdin

2007-05-21 Tema obsahu Radek Machulka
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

2007-05-21 Tema obsahu Karel Šrot
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

2007-05-21 Tema obsahu azurIt
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

2007-05-21 Tema obsahu azurIt
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

2007-05-21 Tema obsahu beny
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

2007-05-21 Tema obsahu Jan Fuchs
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

2007-05-21 Tema obsahu Jan Martinek
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

2007-05-21 Tema obsahu Karel Šrot
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

2007-05-21 Tema obsahu Jan Martinek
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

2007-05-21 Tema obsahu Jan Kundrát
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

2007-05-20 Tema obsahu beny
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

2007-05-20 Tema obsahu darkcraft
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

2007-05-20 Tema obsahu Jan Jakubuv
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