Re: [python] python subprocess vraci porad 1

2010-01-21 Thread Tomas Pelka

On 01/21/2010 11:52 AM, Jan Jakubuv wrote:

zdravim,

On Thu, Jan 21, 2010 at 09:44:55AM +0100, Tomas Pelka wrote:

Dobry napad, predelal sem tedy na:

--
cmd = "/usr/bin/locate"
arg1 = " -i"
arg2 = " -d /var/www/books/mlocate.db"
arg3 = str(" " + pattern)



Chyba je formatu argumentu arg1, atd.  Ta mezera na zacatku tam nesmi byt.
Zkuste:

arg1 = "-i"
arg2a = "-d"
arg2a = "/var/www/books/mlocate.db"
arg3 = str(pattern)

p1 = subprocess.Popen([cmd, arg1, arg2a, arg2b, arg3], shell=False, ...)

Zbytek uz je spravne, pokud argumenty predavate jako list pak je skutecne
treba zadat je oddelene.

Pokud chcete zadat prikaz jako jeden string pak pouzijte `shell=True` a
namistu listu zadejte string:

p1 = subprocess.Popen("/usr/bin/locate -i -d file pattern", shell=True, ...)


(stdoutdata, stderrdata) = p1.communicate()

print p1.returncode
print "%s -- %s" % (stdoutdata, stderrdata)
--

Ale stale vraci 1 a zadny vysledek.



honza.





Diky za radu ale stale se nedokazu dobrat nejakemu vysledku.
Skript je vlastne CGI spoustene z apache, divne ale je, ze kdyz spustim 
z shellu:



# su -s /bin/bash -c "/usr/bin/locate -i -d /var/www/books/mlocate.db 
python; echo $?" apache

0
---
tak vzdy dostanu 0 ale zadny vysledek, pritom CGI vraci 1. Kdyz to same 
spustim jako bezny uzivatel (ne apache) tak dostanu 0 a nenulovy tedy 
spravny vysledek.


Problem s mlocate.db by byt nemel, protoze je citelny pro apache (ten je 
ve skupine books) a vlastne i pro ostatni, viz:


# su -s /bin/bash -c "ls -l /var/www/books/mlocate.db" apache
-rw-rw-r-- 1 tom books 1465653 Jan 20 13:33 /var/www/books/mlocate.db


Cely CGI v priloze.

--
Tom

#!/usr/bin/python

import cgi
import cgitb; cgitb.enable()  # for troubleshooting
import subprocess
import sys
import os
sys.stderr = sys.stdout

command = ""
result = ""
stdoutdata = ""
stderrdata = ""

# Create instance of FieldStorage
form = cgi.FieldStorage()

# Get data from field 'pattern'
pattern = form.getvalue('pattern', 'None')
# Get data from field 're'
re = form.getvalue('re')

cmd = "/usr/bin/locate"
arg1 = "-i"
arg2a = "-d"
arg2b = "/var/www/books/mlocate.db"
arg3 = "-r"
arg4 = str(pattern)
p1 = None

if re == "re":
p1 = subprocess.Popen([cmd, arg1, arg2a, arg2b, arg3, arg4], 
shell=False, \
stdout=subprocess.PIPE, stderr=subprocess.PIPE)
command = "%s %s %s %s %s %s" % (cmd, arg1, arg2a, arg2b, arg3, arg4)
else:
p1 = subprocess.Popen([cmd, arg1, arg2a, arg2b, arg4], shell=False, \
stdout=subprocess.PIPE, stderr=subprocess.PIPE)
command = "%s %s %s %s %s " % (cmd, arg1, arg2a, arg2b, arg4)

(stdoutdata, stderrdata) = p1.communicate()

print "Content-type: text/html"
print

# debug
print "UID: %i " % os.getuid()
print "Search pattern: %s " % pattern
print """stdout: %s 
stderr: %s 
""" % (stdoutdata, stderrdata)
print "Return code: %i" % p1.returncode

print """

Hledej v books


Hledany vyraz:



Hledat pomoci regularniho vyrazu?






"""
if p1.returncode == 0:
if stdoutdata:
result = stdoutdata
else:
result = "Nic takoveho sem nenasel :/"

else:
result = 'Chyba: \
index souboru je bud zastaraly nebo doslo \
k chybe pri vyhledavani.%s \
%s' % (command, stderrdata)

print """
Hledany vyraz "%s" se nachazi v nasledujicich adresarich
%s
 
""" % (pattern, result)

___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python

Re: [python] python subprocess vraci porad 1

2010-01-21 Thread Jan Jakubuv
zdravim,

On Thu, Jan 21, 2010 at 09:44:55AM +0100, Tomas Pelka wrote:
> Dobry napad, predelal sem tedy na:
> 
> --
> cmd = "/usr/bin/locate"
> arg1 = " -i"
> arg2 = " -d /var/www/books/mlocate.db"
> arg3 = str(" " + pattern)
> 

Chyba je formatu argumentu arg1, atd.  Ta mezera na zacatku tam nesmi byt.
Zkuste:

arg1 = "-i"
arg2a = "-d" 
arg2a = "/var/www/books/mlocate.db"
arg3 = str(pattern)

p1 = subprocess.Popen([cmd, arg1, arg2a, arg2b, arg3], shell=False, ...)

Zbytek uz je spravne, pokud argumenty predavate jako list pak je skutecne
treba zadat je oddelene.

Pokud chcete zadat prikaz jako jeden string pak pouzijte `shell=True` a
namistu listu zadejte string:

p1 = subprocess.Popen("/usr/bin/locate -i -d file pattern", shell=True, ...)

> (stdoutdata, stderrdata) = p1.communicate()
> 
> print p1.returncode
> print "%s -- %s" % (stdoutdata, stderrdata)
> --
> 
> Ale stale vraci 1 a zadny vysledek.
> 

honza.



-- 
Heriot-Watt University is a Scottish charity
registered under charity number SC000278.

___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python


Re: [python] python subprocess vraci porad 1

2010-01-21 Thread Tomas Pelka

Dobry napad, predelal sem tedy na:

--
cmd = "/usr/bin/locate"
arg1 = " -i"
arg2 = " -d /var/www/books/mlocate.db"
arg3 = str(" " + pattern)

p1 = subprocess.Popen([cmd, arg1, arg2, arg3], shell=False, 
stdout=subprocess.PIPE, stderr=subprocess.PIPE)
(stdoutdata, stderrdata) = p1.communicate()

print p1.returncode
print "%s -- %s" % (stdoutdata, stderrdata)
--

Ale stale vraci 1 a zadny vysledek.


On 01/20/2010 09:44 PM, Koumes21 wrote:

Nazdar,

me napada akorat to, ze prvni parametr pro subprocess.Popen() by nemel
vypadat jako [cmd, args], ale jako [cmd, arg1, arg2, ...], tedy ze
jednotlive argumenty by nemely byt jen oddeleny mezerou, ale mely by
byt samostatnymi prvky listu. Doufam, ze je to jasne a ze to pomuze
(nezkousel jsem, jenom jsem si tohohle zrovna vsiml).

K21

2010/1/20 Tomas Pelka:
   

Zdravim konferenci,
temer cely den se peru se subprocess. Problem me dela naledujici
jednoducha konstrukce:

--
import subprocess

pattern = "python"
cmd = "/usr/bin/locate"
args = " -i -d /var/www/books/mlocate.db %s" % pattern

p1 = subprocess.Popen([cmd,  args], shell=False, stdout=subprocess.PIPE,
stderr=subprocess.PIPE)
(stdoutdata, stderrdata) = p1.communicate()

print p1.returncode
print "%s -- %s" % (stdoutdata, stderrdata)
--

Takze cilem je spustit prikaz
/usr/bin/locate -i -d /var/www/books/mlocate.db python
v shellu tento prikaz vypise nenulovy vysledek a skonci s nulovym
navratovym kodem. V pythonu konci s navratovym kodem "1" a " -- ".

Netusim proc tomu tak je, ma nekdo nejaky napad.
Dekuji.

--
Tom

Key fingerprint = 06C0 23C6 9EB7 0761 9807  65F4 7F6F 7EAB 496B 28AA
___
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
   



--
Tom

___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python


Re: [python] python subprocess vraci porad 1

2010-01-20 Thread Koumes21
Nazdar,

me napada akorat to, ze prvni parametr pro subprocess.Popen() by nemel
vypadat jako [cmd, args], ale jako [cmd, arg1, arg2, ...], tedy ze
jednotlive argumenty by nemely byt jen oddeleny mezerou, ale mely by
byt samostatnymi prvky listu. Doufam, ze je to jasne a ze to pomuze
(nezkousel jsem, jenom jsem si tohohle zrovna vsiml).

K21

2010/1/20 Tomas Pelka :
> Zdravim konferenci,
> temer cely den se peru se subprocess. Problem me dela naledujici
> jednoducha konstrukce:
>
> --
> import subprocess
>
> pattern = "python"
> cmd = "/usr/bin/locate"
> args = " -i -d /var/www/books/mlocate.db %s" % pattern
>
> p1 = subprocess.Popen([cmd,  args], shell=False, stdout=subprocess.PIPE,
> stderr=subprocess.PIPE)
> (stdoutdata, stderrdata) = p1.communicate()
>
> print p1.returncode
> print "%s -- %s" % (stdoutdata, stderrdata)
> --
>
> Takze cilem je spustit prikaz
> /usr/bin/locate -i -d /var/www/books/mlocate.db python
> v shellu tento prikaz vypise nenulovy vysledek a skonci s nulovym
> navratovym kodem. V pythonu konci s navratovym kodem "1" a " -- ".
>
> Netusim proc tomu tak je, ma nekdo nejaky napad.
> Dekuji.
>
> --
> Tom
>
> Key fingerprint = 06C0 23C6 9EB7 0761 9807  65F4 7F6F 7EAB 496B 28AA
> ___
> 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


[python] python subprocess vraci porad 1

2010-01-20 Thread Tomas Pelka
Zdravim konferenci,
temer cely den se peru se subprocess. Problem me dela naledujici
jednoducha konstrukce:

--
import subprocess

pattern = "python"
cmd = "/usr/bin/locate"
args = " -i -d /var/www/books/mlocate.db %s" % pattern

p1 = subprocess.Popen([cmd,  args], shell=False, stdout=subprocess.PIPE,
stderr=subprocess.PIPE)
(stdoutdata, stderrdata) = p1.communicate()

print p1.returncode
print "%s -- %s" % (stdoutdata, stderrdata)
--

Takze cilem je spustit prikaz
/usr/bin/locate -i -d /var/www/books/mlocate.db python
v shellu tento prikaz vypise nenulovy vysledek a skonci s nulovym
navratovym kodem. V pythonu konci s navratovym kodem "1" a " -- ".

Netusim proc tomu tak je, ma nekdo nejaky napad.
Dekuji.

-- 
Tom

Key fingerprint = 06C0 23C6 9EB7 0761 9807  65F4 7F6F 7EAB 496B 28AA
___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python


Re: [python] Subprocess, bash skript a zpracován í stdout v pythonu

2008-08-24 Thread Martin Stiborský
Děkuji, na tohle bych sám dost těžko přišel.


-- 
S pozdravem
Martin Stiborský

Jabber: [EMAIL PROTECTED]
ICQ: 224-065-849
___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python


Re: [python] Subprocess, bash skript a zpracován í stdout v pythonu

2008-08-24 Thread Jan Jakubuv
zdravim,

2008/8/24 Martin Stiborský <[EMAIL PROTECTED]>:
> Zdravím.
> Hraju si se spuštěním bash skriptu z Pythonu, využívám k tomu modulu 
> subprocess.
> Skriptík sem tam něco vypíše na stdout, já tyhle hlášky sice umím
> sbírat do proměnné v pythonu, ale vypisovat je umím až když bash
> skriptík dokončí svoji činnost.
> Šlo by to udělat trochu "interaktivněji" ? Tedy hned jak něco skriptik
> pošle ven přes echo, sebrat to Pythonem a hned s tím něco provést ..
>

pokud jsem vse dobre pochopil, tak problem co popisujete je zrejme ze
se read zablokuje dokud neprecte veskery vstup ze skriptu. muzete
pouzit neblokujici variantu read, tu v pythonu naleznete v modulu os
jako funkci os.read. Funkce prijima dva argumenty: 1) file deskriptor
(zjistije z file objektu metodou fileno) a 2) maximalni pocet bytu
ktere je mozne precist. Funkce se zablokuje jen v okamziku kdy nejsou
k dispozici *zadna* data; pokud jsou data k dispozici, tak je vrati
neprodlene. Zablokovani v pripade zadnych dat muzete predejit pouzitim
funkce select.select, ktera vam umozni zjistit zda-li jsou nejaka data
k dispozici.

Nejlepe snad mala ukazka:

from subprocess import Popen, PIPE
from select import select
import os

p = Popen("./test.sh", stdout=PIPE)
s = True # to je mala finta, aby se while cyklus alespon jednou vykonal
while s:
(r,w,e) = select([p.stdout],[],[],0)
if r:
s = os.read(p.stdout.fileno(),23) # os.read vraci prazdny
string v pripade konce vstupu
print s

Mozna budete spokojen i s verzi bez select:

p = Popen("./test.sh", stdout=PIPE)
s = True
while s:
s = os.read(p.stdout.fileno(),23)
print s

Jedina neprijemnost je s tim, ze musite zadavat maximalni pocet
prectenych znaku a v pripade ze je vstup delsi, musite ho rucne
skladat (tj. vstup je "nebufferovany").

S pozdavem,
honza.


> --
> S pozdravem
> Martin Stiborský
>
> Jabber: [EMAIL PROTECTED]
> ICQ: 224-065-849
> ___
> 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


[python] Subprocess, bash skript a zpracován í stdout v pythonu

2008-08-24 Thread Martin Stiborský
Zdravím.
Hraju si se spuštěním bash skriptu z Pythonu, využívám k tomu modulu subprocess.
Skriptík sem tam něco vypíše na stdout, já tyhle hlášky sice umím
sbírat do proměnné v pythonu, ale vypisovat je umím až když bash
skriptík dokončí svoji činnost.
Šlo by to udělat trochu "interaktivněji" ? Tedy hned jak něco skriptik
pošle ven přes echo, sebrat to Pythonem a hned s tím něco provést ..

-- 
S pozdravem
Martin Stiborský

Jabber: [EMAIL PROTECTED]
ICQ: 224-065-849
___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python


[python] subprocess, pipes

2007-10-10 Thread Koumes21
Dobrý den,
udělal jsem si dva jednoducé prográmky abych si vyzkouše
komunikaci mezi procesy. Jeden z nich jednoduše vypisuje to, co do něj
napíšete:

import sys

while 1:
c1=sys.stdin.read(1)
sys.stdout.write(c1)
sys.stdout.flush()

Tento první jsem změnil na exe soubor modulem py2exe.
Druhý program spustí ten první a posílá do něj to co uživatel
napíše a to co se vrátí tiskne na obrazovku:

import subprocess,sys,thread

pipe = subprocess.Popen("server.exe",
stdin=subprocess.PIPE,
stdout=subprocess.PIPE)

def reciever():
while 1:
c1=pipe.stdout.read(1)
sys.stdout.write(c1)

thread.start_new(reciever,())

while 1:
c1=sys.stdin.read(1)
pipe.stdin.write(c1)

Je mi jasné, že program není ještě dokončený, ale jde o princip.
V tomto okamžiku vše správně funguje. Já bych ale potřeboval,
aby se "server" nezapínal jako podproces, ale aby například oba
programy zapnul uživatel a oni se sami poznaly a začaly spolu
komunikovat. Kdyby někdo věděl a poradil mi, budu mu jistě vděčný.

Koumes21
___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python

Re: [python] subprocess

2007-08-24 Thread Jan Martinek
Ahoj,

jakým způsobem by se to dalo zreprodukovat? Výjimku se mi nedaří 
vyvolat, ani když periodicky zkouším pouštět 'sleep' s různými čekacími 
dobami:

#!/usr/bin/python
import subprocess, random
while True:
 t = str(random.randint(1, 5))
 print t
 process = subprocess.Popen(['sleep', t])
 retvalue = process.wait()

Ani když vytvořím binárku, která by měla běžet co nejkratší dobu, tj.

#include
int main(void){
 return 0;
}

a pak ji zkouším neustále spouštět

#!/usr/bin/python
import subprocess
while True:
 process = subprocess.Popen(['./pokus'])
 retvalue = process.wait()

tak výjimku nedostanu. Může to záviset na platformě?

--
Jan Martinek

Šponar Josef wrote:
> Skript ověřuje zda jsou splněny podmínky pro spuštění externích programů. 
> Když jsou splněny podmínky, pokusí se vytvořit nový proces a testuje 
> návratovou hodnotu.
> 
> V případě, že  externí program běží více než cca.5sekund, tak je vše v 
> pořádku. Ale může se stát, že program  běží kratší dobu a "někdy" to projde v 
> pořádku a "někdy" to skončí popisovanou chybou.
> Zkoušel jsem i popen2, výsledek stejný.
> 
> Používam takovouto konstrukci:
> 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
> 
> 
>  
> 
> -Original Message-
> From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of Petr Nesládek
> Sent: Thursday, August 23, 2007 11:42 PM
> To: Konference PyCZ
> Subject: Re: [python] subprocess
> 
> 
>>  Původní zpráva 
>> Od: Šponar Josef <[EMAIL PROTECTED]>
>> Předmět: [python] subprocess
>> Datum: 23.8.2007 13:18:06
>> 
>>
>> Ahoj, nevíte někdo jak odstranit tuto podivnost při používání 
>> subprocess.wait().
>> PYTHON = 2.4
>> System = SunOS
>>
>> prog=SUB.Popen(cmd, stderr=SUB.PIPE, stdout=SUB.PIPE)
>> retval=prog.wait()
>>
>> Traceback (most recent call last):
>>   File "av_rizeni.py", line 283, in ?
>> main()
>>   File "av_rizeni.py", line 180, in main
>> retval=prog.wait()
>>   File "/usr/local/lib/python2.4/subprocess.py", line 1007, in wait
>> pid, sts = os.waitpid(self.pid, 0)
>> OSError: [Errno 10] No child processes 
>> ___
>> Python mailing list
>> Python@py.cz
>> http://www.py.cz/mailman/listinfo/python
>>
> 
> Ahoj, možná sezeptám hloupě, ale ten subproces  se rozběhne, nebo ne ?
> 
> Případně co se vůbec děje do momentu než zkončí chybou ?
> 
> Petr
> 
> 
> 
> ___
> 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
___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python


Re: [python] subprocess

2007-08-24 Thread Šponar Josef
Díky, to bude asi ono. Ale myslím si, že je problém v pythonu.  

-Original Message-
From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of Jan Jakubuv
Sent: Thursday, August 23, 2007 2:20 PM
To: Konference PyCZ
Subject: Re: [python] subprocess

dobry den,

co treba takto:

prog=SUB.Popen(cmd, stderr=SUB.PIPE, stdout=SUB.PIPE)
try:
retval=prog.wait()
except IOError, (errorno, strerror):
from errno import ECHILD
if errorno == ECHILD:
pass
retvat = prog.returncode

h.

2007/8/23, Šponar Josef <[EMAIL PROTECTED]>:
>
> Ahoj, nevíte někdo jak odstranit tuto podivnost při používání 
> subprocess.wait().
> PYTHON = 2.4
> System = SunOS
>
> prog=SUB.Popen(cmd, stderr=SUB.PIPE, stdout=SUB.PIPE)
> retval=prog.wait()
>
> Traceback (most recent call last):
>   File "av_rizeni.py", line 283, in ?
> main()
>   File "av_rizeni.py", line 180, in main
> retval=prog.wait()
>   File "/usr/local/lib/python2.4/subprocess.py", line 1007, in wait
> pid, sts = os.waitpid(self.pid, 0)
> OSError: [Errno 10] No child processes 
> ___
> 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
___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python


Re: [python] subprocess

2007-08-24 Thread Šponar Josef
Skript ověřuje zda jsou splněny podmínky pro spuštění externích programů. Když 
jsou splněny podmínky, pokusí se vytvořit nový proces a testuje návratovou 
hodnotu.

V případě, že  externí program běží více než cca.5sekund, tak je vše v pořádku. 
Ale může se stát, že program  běží kratší dobu a "někdy" to projde v pořádku a 
"někdy" to skončí popisovanou chybou.
Zkoušel jsem i popen2, výsledek stejný.

Používam takovouto konstrukci:
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


 

-Original Message-
From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of Petr Nesládek
Sent: Thursday, August 23, 2007 11:42 PM
To: Konference PyCZ
Subject: Re: [python] subprocess


>  Původní zpráva ----
> Od: Šponar Josef <[EMAIL PROTECTED]>
> Předmět: [python] subprocess
> Datum: 23.8.2007 13:18:06
> 
> 
> Ahoj, nevíte někdo jak odstranit tuto podivnost při používání 
> subprocess.wait().
> PYTHON = 2.4
> System = SunOS
> 
> prog=SUB.Popen(cmd, stderr=SUB.PIPE, stdout=SUB.PIPE)
> retval=prog.wait()
> 
> Traceback (most recent call last):
>   File "av_rizeni.py", line 283, in ?
> main()
>   File "av_rizeni.py", line 180, in main
> retval=prog.wait()
>   File "/usr/local/lib/python2.4/subprocess.py", line 1007, in wait
> pid, sts = os.waitpid(self.pid, 0)
> OSError: [Errno 10] No child processes 
> ___
> Python mailing list
> Python@py.cz
> http://www.py.cz/mailman/listinfo/python
> 

Ahoj, možná sezeptám hloupě, ale ten subproces  se rozběhne, nebo ne ?

Případně co se vůbec děje do momentu než zkončí chybou ?

Petr



___
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


[python] subprocess

2007-08-24 Thread Šponar Josef
Ahoj, pro upřesnění:
Tato chyba se vyskytne náhodně. 

Nelze napsat např:
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

___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python


Re: [python] subprocess

2007-08-23 Thread Petr Nesládek

>  Původní zpráva 
> Od: Šponar Josef <[EMAIL PROTECTED]>
> Předmět: [python] subprocess
> Datum: 23.8.2007 13:18:06
> 
> 
> Ahoj, nevíte někdo jak odstranit tuto podivnost při používání
> subprocess.wait().
> PYTHON = 2.4
> System = SunOS
> 
> prog=SUB.Popen(cmd, stderr=SUB.PIPE, stdout=SUB.PIPE)
> retval=prog.wait()
> 
> Traceback (most recent call last):
>   File "av_rizeni.py", line 283, in ?
> main()
>   File "av_rizeni.py", line 180, in main
> retval=prog.wait()
>   File "/usr/local/lib/python2.4/subprocess.py", line 1007, in wait
> pid, sts = os.waitpid(self.pid, 0)
> OSError: [Errno 10] No child processes
> ___
> Python mailing list
> Python@py.cz
> http://www.py.cz/mailman/listinfo/python
> 

Ahoj, možná sezeptám hloupě, ale ten subproces  se rozběhne, nebo ne ?

Případně co se vůbec děje do momentu než zkončí chybou ?

Petr



___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python


Re: [python] subprocess

2007-08-23 Thread Jan Jakubuv
dobry den,

co treba takto:

prog=SUB.Popen(cmd, stderr=SUB.PIPE, stdout=SUB.PIPE)
try:
retval=prog.wait()
except IOError, (errorno, strerror):
from errno import ECHILD
if errorno == ECHILD:
pass
retvat = prog.returncode

h.

2007/8/23, Šponar Josef <[EMAIL PROTECTED]>:
>
> Ahoj, nevíte někdo jak odstranit tuto podivnost při používání 
> subprocess.wait().
> PYTHON = 2.4
> System = SunOS
>
> prog=SUB.Popen(cmd, stderr=SUB.PIPE, stdout=SUB.PIPE)
> retval=prog.wait()
>
> Traceback (most recent call last):
>   File "av_rizeni.py", line 283, in ?
> main()
>   File "av_rizeni.py", line 180, in main
> retval=prog.wait()
>   File "/usr/local/lib/python2.4/subprocess.py", line 1007, in wait
> pid, sts = os.waitpid(self.pid, 0)
> OSError: [Errno 10] No child processes
> ___
> 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


[python] subprocess

2007-08-23 Thread Šponar Josef

Ahoj, nevíte někdo jak odstranit tuto podivnost při používání subprocess.wait().
PYTHON = 2.4
System = SunOS

prog=SUB.Popen(cmd, stderr=SUB.PIPE, stdout=SUB.PIPE)
retval=prog.wait()

Traceback (most recent call last):
  File "av_rizeni.py", line 283, in ?
main()
  File "av_rizeni.py", line 180, in main
retval=prog.wait()
  File "/usr/local/lib/python2.4/subprocess.py", line 1007, in wait
pid, sts = os.waitpid(self.pid, 0)
OSError: [Errno 10] No child processes
___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python


Re: [python] subprocess - komunikace s interaktivnim programem

2007-04-24 Thread Radek Kanovsky
On Tue, Apr 24, 2007 at 10:06:57AM +0200, kraliczek wrote:

> Nelibi se mi, ze program linphonec(konsolovy SIP klient) pracuje
> interaktivne, proto chci tento program obalit vlastni nadstavbou, ze
> ktere se bude moc program ovladat pres parametry zadane pri spusteni
> nadstavby.

S jednoduchym ovladanim terminalovych interaktivnich programu pres
stdin/stdout vetsinou nevystacite. Lezou z nich escape sekvence,
vyzaduji pristup ke klavesam apod. Zkuste pexpect, ten je na takove veci
delany. http://pexpect.sourceforge.net/

Radek Kaňovský
___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python


Re: [python] subprocess - komunikace s interaktivnim programem

2007-04-24 Thread Jan Kundrát
kraliczek wrote:
> Abych byl presnejsi, spousteny program s kterym komunikuji pres roury 
> vypisuje vsechny data na stdout

Tak jeste muzes zkusit modul pty.

Blesmrt,
-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

Re: [python] subprocess - komunikace s interaktivnim programem

2007-04-24 Thread kraliczek
> kraliczek wrote:
> > Ahoj, Potreboval bych si napsat nadstavbu nad program, ktery
> > komunikuje interaktivne pres stdin a stdout. Nasel jsem si knihovnu
> > subprocess v pythonu. Komunikace na stdin toho spusteneho programu
> > funguje, ale nejsem schopen vytahnout data, ktere ten program pise na
> > stdout...
> 
> Zkus si pohrat s bufferovanim. Pro os.popen() by to bylo asi tohle:
> 
>   (_w, _r) = os.popen2(command, bufsize=0)
> 
> Modul subprocess nejspis bude umet neco podobneho.
> 
> Hezky vecer,
> -jkt
> 
> -- 
> cd /local/pub && more beer > /dev/mouth
> 

S bufferem jsem si zkousel pohrat. Abych byl presnejsi, spousteny program s 
kterym komunikuji pres roury vypisuje vsechny data na stdout (vyzkouseno 
pomoci: ./program > stdout.txt), Pres rouru pripojenou na stdout toho programu 
dostanu nejaka data, vypise mi priblizne ctyri radky a potom zustane stat 
(ikdyz na stdout bylo zcela urcite poslano vice textu). Tento text dostanu, az 
kdyz poslu parkrat znak '\n' na stdin pres rouru na nej napojenu.
Ze by to mohl byt problem s bufferem mne taky napadlo, ale kdyz zadam bufsize=0 
(coz by melo byti unbuffered) chova se to porad stejne :(

Pro nazornost, od abstrankniho ke konkretnimu:
Nelibi se mi, ze program linphonec(konsolovy SIP klient) pracuje interaktivne, 
proto chci tento program obalit vlastni nadstavbou, ze ktere se bude moc 
program ovladat pres parametry zadane pri spusteni nadstavby.

Program jsem upravil pro testovanin roury nasledujicim zpusobem:

pipe = subprocess.Popen('linphonec', stdin=subprocess.PIPE, 
stdout=subprocess.PIPE,bufsize=0)
input = [pipe.stdout, sys.stdin]
while 1:
inputready, outputready, exceptready = select.select(input,[],[])
for i in inputready:
if i == pipe.stdout:
str = pipe.stdout.readline()
print str,
if i == sys.stdin:
pipe.stdin.write(sys.stdin.readline())

Narazil jsem ale na to, ze program rucne inicializuji, a  zadam prikaz pro 
volani. Vypise se mi jeste hlaska o tom, ze se zahajilo volani, ale uz se mi 
nevypise text,
ze hovor byl prijat. - tento text ho donutim vypsat az kdyz zmacku enter (kdyz 
spustim primo linphonec, tak ty hlasky vypisuje bez problemu).
___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python


Re: [python] subprocess - komunikace s interaktivnim programem

2007-04-23 Thread Jan Kundrát
kraliczek wrote:
> Ahoj, Potreboval bych si napsat nadstavbu nad program, ktery
> komunikuje interaktivne pres stdin a stdout. Nasel jsem si knihovnu
> subprocess v pythonu. Komunikace na stdin toho spusteneho programu
> funguje, ale nejsem schopen vytahnout data, ktere ten program pise na
> stdout...

Zkus si pohrat s bufferovanim. Pro os.popen() by to bylo asi tohle:

(_w, _r) = os.popen2(command, bufsize=0)

Modul subprocess nejspis bude umet neco podobneho.

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] subprocess - komunikace s interaktivnim programem

2007-04-23 Thread kraliczek
Ahoj,
Potreboval bych si napsat nadstavbu nad program, ktery komunikuje interaktivne 
pres stdin a stdout. Nasel jsem si knihovnu subprocess v pythonu. Komunikace na 
stdin toho spusteneho programu funguje, ale nejsem schopen vytahnout data, 
ktere ten program pise na stdout...

from subprocess import *
p = Popen('program', stdin=PIPE, stdout=PIPE)
p.stdin.write('programe pipni\n') # spusteny program pipne a vypise hlaseni na 
stdout
p.stdout.readline()

Kdyz program po spusteni vypise na stdout nejake radky, tak je pomoci 
p.stdout.readline() jsem schopen vypsat, ale nevim jak zjistit, ze precteny 
radek je posledni a dal zatim neni co cist -> kdyz v teto chvili prikaz 
p.stdout.readline() spustim, zustane cekat a ikdyz na stdout program potom 
nejake data posle...
(+ s tim souvisejici - jak prijmout data, ktera nekonci znakem noveho radku?)

Mohl by mi nekdo poradit, jak na to/kde je chyba ?

Diky 
___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python


Re: [python] subprocess

2007-04-01 Thread Jan Martinek
Vladislav Ludík wrote:
> Zdravím,
> 
> jak odeslat v linuxu příkaz pomocí subprocess.
> 
> V linuxu napíšu například:
> 
> server:~# sendsms "číslo"  "text"
> 
> a ten mi přes nainstalovanou SMS bránu odešle "text" na zadané "číslo"
> 
> Přes subprocess se mi to nedaří.
> 
> Díky za radu

import subprocess
cmd = ['sendsms', 'cislo', 'text']
process = subprocess.Popen(cmd)

a kdybys chtěl čekat na ukončení příkazu, tak ještě
process.wait()

Jo a je nutné to pouštět jako root?
___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python


[python] subprocess

2007-04-01 Thread Vladislav Ludík
Zdravím,

jak odeslat v linuxu příkaz pomocí subprocess.

V linuxu napíšu například:

server:~# sendsms "číslo"  "text"

a ten mi přes nainstalovanou SMS bránu odešle "text" na zadané "číslo"

Přes subprocess se mi to nedaří.

Díky za radu
___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python


Re: [python] subprocess v samostatnem okne

2006-10-19 Thread Pavel Kosina
radek napsal(a):
> To je sice hezke, chtel jsem tuto info dat i na py.cz
> (http://www.py.cz/KonferenceDiskuze), ale nikde neni tlacitko Edit. Ja
> myslel, ze to je wiki? Radek
>   
je to půlwiki, kvůli nejen tureckým spamům  snad ale časem bude líp
nacionále jsou: pycz heslo


-- 
geon
Pavel Kosina

___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python


Re: [python] subprocess v samostatnem okne

2006-10-19 Thread radek
To je sice hezke, chtel jsem tuto info dat i na py.cz
(http://www.py.cz/KonferenceDiskuze), ale nikde neni tlacitko Edit. Ja
myslel, ze to je wiki? Radek

> Rozhrani ke konferencim najdete standardne na:
> http://www.py.cz/mailman/listinfo/
___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python


Re: [python] subprocess v samostatnem okne

2006-10-19 Thread ViNiL
On Tuesday 17 October 2006 10:42, radek wrote:
> OK, takze uz je definitivne jenom jedna konfera. Fajn. Tutor archiv by
> mohl byt nejak pristupny z py.cz. Fakt jde spatne najit. A mel by
> nekdo odpoved na moji otazku?

Konferenci jsem dosud nezrusil -- chtel jsem nechat dobehnout diskuzi a 
zapremyslet nad vsemi dusledky (migrovani clenu, reseni archivu atd.)

Rozhrani ke konferencim najdete standardne na:
http://www.py.cz/mailman/listinfo/


-- 

ViNiL

Success is how you bounce on the bottom.
-- General George S. Patton, Jr.



pgpHmlp3B9Lba.pgp
Description: PGP signature
___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python

Re: [python] subprocess v samostatnem okne

2006-10-17 Thread radek
OK, takze uz je definitivne jenom jedna konfera. Fajn. Tutor archiv by
mohl byt nejak pristupny z py.cz. Fakt jde spatne najit. A mel by
nekdo odpoved na moji otazku?

Diky, Radek

On 10/17/06, Pavel Kosina <[EMAIL PROTECTED]> wrote:
> radek napsal(a):
> > Uf tak ted jsem z tech x konferenci zmateny. Kvuli nasledujicimu
> > dotazu jsem se nahlasil do Tutor, nacez Tutor archiv uz ani nemohu
> > nalezt na www.py.cz.
> >
> Byl jsem rychlejší než ViNiL ;-) Jinak se to ale stále dá najít, když se
>
> a/ podíváš do historie stránky - last edited _xx_ ago
> b/ když budeš na přihlašovací stránce do konference python@py.cz, tak z
> url řádky vymažeš python
>
> To jen pro info, jinak jsi tu správně.
>
> --
> geon
> Pavel Kosina
>
> ___
> 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] subprocess v samostatnem okne

2006-10-16 Thread Pavel Kosina
radek napsal(a):
> Uf tak ted jsem z tech x konferenci zmateny. Kvuli nasledujicimu
> dotazu jsem se nahlasil do Tutor, nacez Tutor archiv uz ani nemohu
> nalezt na www.py.cz.
>   
Byl jsem rychlejší než ViNiL ;-) Jinak se to ale stále dá najít, když se

a/ podíváš do historie stránky - last edited _xx_ ago
b/ když budeš na přihlašovací stránce do konference python@py.cz, tak z 
url řádky vymažeš python

To jen pro info, jinak jsi tu správně.

-- 
geon
Pavel Kosina

___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python


[python] subprocess v samostatnem okne

2006-10-16 Thread radek
Uf tak ted jsem z tech x konferenci zmateny. Kvuli nasledujicimu
dotazu jsem se nahlasil do Tutor, nacez Tutor archiv uz ani nemohu
nalezt na www.py.cz.

-- Forwarded message --
Ahoj,

pokousim se udelat GUI spoustec ruznych aplikaci pomoci Pythonu a Tkinteru.

Momentalne, kdyz pouziju subprocess.Popen("mycommand"), tak veskery
vystup jde na stdout meho launcheru.

Jenomze pro nektere command line applikace potřebuji, aby se spustily
se samostanym "terminalovym" oknem.

Jo, zkousim to na Woknech a OSX. Na woknech nemam opravneni soustet
cmd (launcher ma byt na flashce).

Jak na to?

Diky,

Radek
___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python