Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

[python] stdout v subprocess

21 views
Skip to first unread message

"Ing. Vladislav Ludík"

unread,
Oct 27, 2012, 6:58:18 AM10/27/12
to Konference PyCZ
Ahoj, poradí někdo se získáním výstupu při použití subprocess ?

Příklad:

Soubor je uložen na vzdáleném serveru na sambě = zdroj. Chci jej načíst
a uložit u sebe na mém serveru = cíl.

Používám následující skript:

/import subprocess

def ctiSambu(zdroj, cil):
'Samba -> Server'

command = [
'sshpass',
'-p', 'heslo',
'scp',
'-P', '9999',
'-o', 'StrictHostKeyChecking=no',
'-o', 'UserKnownHostsFile=/dev/null',
'-o', 'LogLevel=ERROR',
'ro...@server.domena.cz:/home/samba/disk/%s' % zdroj,
cil
]
prg = subprocess.Popen(command, shell=False, stdout=subprocess.PIPE)
return prg.wait()

zdroj = 'cteny_soubor'
cil = 'uloziste'

status = //ctiSambu(zdroj, cil)

if status != 0:
print 'nejaka chyba'
//
/Chyba vznikne například zadáním neexistujícího souboru apod.
Můj dotaz se týká zjištění, jaká chyba způsobila nenulový status.
Chybová zpráva se sice vypíše na konzolu, ale já ji však potřebuju pro
další zpracování mít v proměnné.

Poradí mi někdo ?

azurIt

unread,
Oct 27, 2012, 7:18:06 AM10/27/12
to Konference PyCZ
http://docs.python.org/library/subprocess.html#subprocess.Popen.communicate

azur


______________________________________________________________
> Od: "\Ing. Vladislav Ludík\" <vl...@ludik.cz>
> Komu: Konference PyCZ <pyt...@py.cz>
> Dátum: 27.10.2012 12:58
> Predmet: [python] stdout v subprocess
>_______________________________________________
>Python mailing list
>Pyt...@py.cz
>http://www.py.cz/mailman/listinfo/python
>

"Ing. Vladislav Ludík"

unread,
Oct 27, 2012, 7:25:20 AM10/27/12
to Konference PyCZ
subprocess.Popen.communicate jsem zkou�el tak�, vrac� v�ak pr�zdn� hodnoty.
Z�ejm� proto, jeliko� vlastn� command je bez chyby.


azurIt napsal(a):
> http://docs.python.org/library/subprocess.html#subprocess.Popen.communicate
>
> azur
>
>
> ______________________________________________________________
>
>> Od: "\Ing. Vladislav Lud�k\" <vl...@ludik.cz>
>> Komu: Konference PyCZ <pyt...@py.cz>
>> D�tum: 27.10.2012 12:58
>> Predmet: [python] stdout v subprocess
>>
>> Ahoj, porad� n�kdo se z�sk�n�m v�stupu p�i pou�it� subprocess ?
>>
>> P��klad:
>>
>> Soubor je ulo�en na vzd�len�m serveru na samb� = zdroj. Chci jej na��st
>> a ulo�it u sebe na m�m serveru = c�l.
>>
>> Pou��v�m n�sleduj�c� skript:
>>
>> /import subprocess
>>
>> def ctiSambu(zdroj, cil):
>> 'Samba -> Server'
>>
>> command = [
>> 'sshpass',
>> '-p', 'heslo',
>> 'scp',
>> '-P', '9999',
>> '-o', 'StrictHostKeyChecking=no',
>> '-o', 'UserKnownHostsFile=/dev/null',
>> '-o', 'LogLevel=ERROR',
>> 'ro...@server.domena.cz:/home/samba/disk/%s' % zdroj,
>> cil
>> ]
>> prg = subprocess.Popen(command, shell=False, stdout=subprocess.PIPE)
>> return prg.wait()
>>
>> zdroj = 'cteny_soubor'
>> cil = 'uloziste'
>>
>> status = //ctiSambu(zdroj, cil)
>>
>> if status != 0:
>> print 'nejaka chyba'
>> //
>> /Chyba vznikne nap��klad zad�n�m neexistuj�c�ho souboru apod.
>> M�j dotaz se t�k� zji�t�n�, jak� chyba zp�sobila nenulov� status.
>> Chybov� zpr�va se sice vyp�e na konzolu, ale j� ji v�ak pot�ebuju pro
>> dal�� zpracov�n� m�t v prom�nn�.
>>
>> Porad� mi n�kdo ?

azurIt

unread,
Oct 27, 2012, 7:29:35 AM10/27/12
to Konference PyCZ
Skus vyvolat nejaku chybu, aby to nieco vypisalo a uvidis, ci to funguje.




______________________________________________________________
> Od: "\Ing. Vladislav Ludík\" <vl...@ludik.cz>
> Komu: Konference PyCZ <pyt...@py.cz>
> Dátum: 27.10.2012 13:25
> Predmet: Re: [python] stdout v subprocess
>
>subprocess.Popen.communicate jsem zkoušel také, vrací však prázdné hodnoty.
>Zřejmě proto, jelikož vlastní command je bez chyby.
>
>
>azurIt napsal(a):
>> http://docs.python.org/library/subprocess.html#subprocess.Popen.communicate
>>
>> azur
>>
>>
>> ______________________________________________________________
>>
>>> Od: "\Ing. Vladislav Ludík\" <vl...@ludik.cz>
>>> Komu: Konference PyCZ <pyt...@py.cz>
>>> Dátum: 27.10.2012 12:58
>>> Predmet: [python] stdout v subprocess
>>>
>>> Ahoj, poradí někdo se získáním výstupu při použití subprocess ?
>>>
>>> Příklad:
>>>
>>> Soubor je uložen na vzdáleném serveru na sambě = zdroj. Chci jej načíst
>>> a uložit u sebe na mém serveru = cíl.
>>>
>>> Používám následující skript:
>>>
>>> /import subprocess
>>>
>>> def ctiSambu(zdroj, cil):
>>> 'Samba -> Server'
>>>
>>> command = [
>>> 'sshpass',
>>> '-p', 'heslo',
>>> 'scp',
>>> '-P', '9999',
>>> '-o', 'StrictHostKeyChecking=no',
>>> '-o', 'UserKnownHostsFile=/dev/null',
>>> '-o', 'LogLevel=ERROR',
>>> 'ro...@server.domena.cz:/home/samba/disk/%s' % zdroj,
>>> cil
>>> ]
>>> prg = subprocess.Popen(command, shell=False, stdout=subprocess.PIPE)
>>> return prg.wait()
>>>
>>> zdroj = 'cteny_soubor'
>>> cil = 'uloziste'
>>>
>>> status = //ctiSambu(zdroj, cil)
>>>
>>> if status != 0:
>>> print 'nejaka chyba'
>>> //
>>> /Chyba vznikne například zadáním neexistujícího souboru apod.
>>> Můj dotaz se týká zjištění, jaká chyba způsobila nenulový status.
>>> Chybová zpráva se sice vypíše na konzolu, ale já ji však potřebuju pro
>>> další zpracování mít v proměnné.
>>>
>>> Poradí mi někdo ?

"Ing. Vladislav Ludík"

unread,
Oct 27, 2012, 7:54:07 AM10/27/12
to Konference PyCZ
V�sledek:

Bez chyby: sts = 0, stdout = None, stderr =
Chyba: sts = 1, stdout = None, stderr = scp:
/home/samba/zakladni/READMEx.txt: No such file or directory

D�ky, funguje to
V.L.

azurIt napsal(a):
> Skus vyvolat nejaku chybu, aby to nieco vypisalo a uvidis, ci to funguje.
>
>
>
>
> ______________________________________________________________
>
>> Od: "\Ing. Vladislav Lud�k\" <vl...@ludik.cz>
>> Komu: Konference PyCZ <pyt...@py.cz>
>> D�tum: 27.10.2012 13:25
>> Predmet: Re: [python] stdout v subprocess
>>
>> subprocess.Popen.communicate jsem zkou�el tak�, vrac� v�ak pr�zdn� hodnoty.
>> Z�ejm� proto, jeliko� vlastn� command je bez chyby.
>>
>>
>> azurIt napsal(a):
>>
>>> http://docs.python.org/library/subprocess.html#subprocess.Popen.communicate
>>>
>>> azur
>>>
>>>
>>> ______________________________________________________________
>>>
>>>
>>>> Od: "\Ing. Vladislav Lud�k\" <vl...@ludik.cz>
>>>> Komu: Konference PyCZ <pyt...@py.cz>
>>>> D�tum: 27.10.2012 12:58
>>>> Predmet: [python] stdout v subprocess
>>>>
>>>> Ahoj, porad� n�kdo se z�sk�n�m v�stupu p�i pou�it� subprocess ?
>>>>
>>>> P��klad:
>>>>
>>>> Soubor je ulo�en na vzd�len�m serveru na samb� = zdroj. Chci jej na��st
>>>> a ulo�it u sebe na m�m serveru = c�l.
>>>>
>>>> Pou��v�m n�sleduj�c� skript:
>>>>
>>>> /import subprocess
>>>>
>>>> def ctiSambu(zdroj, cil):
>>>> 'Samba -> Server'
>>>>
>>>> command = [
>>>> 'sshpass',
>>>> '-p', 'heslo',
>>>> 'scp',
>>>> '-P', '9999',
>>>> '-o', 'StrictHostKeyChecking=no',
>>>> '-o', 'UserKnownHostsFile=/dev/null',
>>>> '-o', 'LogLevel=ERROR',
>>>> 'ro...@server.domena.cz:/home/samba/disk/%s' % zdroj,
>>>> cil
>>>> ]
>>>> prg = subprocess.Popen(command, shell=False, stdout=subprocess.PIPE)
>>>> return prg.wait()
>>>>
>>>> zdroj = 'cteny_soubor'
>>>> cil = 'uloziste'
>>>>
>>>> status = //ctiSambu(zdroj, cil)
>>>>
>>>> if status != 0:
>>>> print 'nejaka chyba'
>>>> //
>>>> /Chyba vznikne nap��klad zad�n�m neexistuj�c�ho souboru apod.
>>>> M�j dotaz se t�k� zji�t�n�, jak� chyba zp�sobila nenulov� status.
>>>> Chybov� zpr�va se sice vyp�e na konzolu, ale j� ji v�ak pot�ebuju pro
>>>> dal�� zpracov�n� m�t v prom�nn�.
>>>>
>>>> Porad� mi n�kdo ?
0 new messages