[Python] Intercettazione errore.

2017-07-05 Per discussione Gabriele Battaglia

Giorno.
Una questione semplicissima.
Per far sì che il blocco try...except, intercetti questo errore:

socket.error: [Errno 10054] Connessione in corso interrotta forzatamente 
dall'host remoto


Cosa bisogna scrivere dopo

except?

Grazie.
Gabriele.
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] Intercettazione errore.

2017-07-05 Per discussione Francesco Barresi
import socket

try:
 # comando che usa socket
except socket.error as e:
 #gestisci errore 10054
 #probabilmente esaminando la variable "e".



Il 05/Lug/2017 14:47, "Gabriele Battaglia"  ha scritto:

Giorno.
Una questione semplicissima.
Per far sì che il blocco try...except, intercetti questo errore:

socket.error: [Errno 10054] Connessione in corso interrotta forzatamente
dall'host remoto

Cosa bisogna scrivere dopo

except?

Grazie.
Gabriele.
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] Intercettazione errore.

2017-07-05 Per discussione Giornale di Sistema


Il 05/07/2017 14:46, Gabriele Battaglia ha scritto:

Giorno.
Una questione semplicissima.
Per far sì che il blocco try...except, intercetti questo errore:

socket.error: [Errno 10054] Connessione in corso interrotta 
forzatamente dall'host remoto


Cosa bisogna scrivere dopo

except?


L'errore da gestire: 
https://docs.python.org/2/library/errno.html#errno.ECONNRESET

Un esempio: https://stackoverflow.com/a/20187674

GdS
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


[Python] Iteratori iterabile

2017-07-05 Per discussione Franky gmail

Ciao,

Leggendo la pep-0234, in sintesi un oggetto iteratore deve avere due 
metodi: oggetto.__iter__() e oggetto.__next__). correggetemi se ho 
inteso male.


faccio un esempio:

creo una lista lista=['pippo', 'pluto', 'paperoga']

hasattr(lista,'__iter__') # vero

hasattr(lista,'__next__') # falso

quindi una lista (succede la stessa cosa anche con un set) non è un 
iteratore perchè non possiede entrambi i metodi sopraccitati. Però se 
creo un oggetto di tipo lista, possiede entrambi i metodi:


lista1 = lista.__iter__()

hasattr(lista1,'__iter__')#vero

hasattr(lista1,'__next__')#vero

lista1.__next__()

'pippo'

lista1.__next__()

'pluto'

lista1.__next__()

'paperoga'

lista1.__next__()

StopIteration

Devo desumere che le istanze di un iterabile non iteratore possono 
essere iteratori?


grazie per la pazienza





___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] Iteratori iterabile

2017-07-05 Per discussione Christian Barra
Ciao

> On 5 Jul 2017, at 20:53, Franky gmail  wrote:
> 
> quindi una lista (succede la stessa cosa anche con un set) non è un iteratore 
> perchè non possiede entrambi i metodi sopraccitati. Però se creo un oggetto 
> di tipo lista, possiede entrambi i metodi:
> 
> lista1 = lista.__iter__()

Questo pero’ non e’ un oggetto di tipo lista, stai trasformando lista in un 
iterator, che sono due cose diverse.

> 
> 
> Devo desumere che le istanze di un iterabile non iteratore possono essere 
> iteratori?
> 
> 

Credo sia più’ chiaro dire che ci sono oggetti in Python che non sono iterator 
ma che possono essere iterabili.

https://docs.python.org/3/glossary.html#term-iterable 

___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] ctypes importare libreria

2017-07-05 Per discussione Massimiliano Rosi
Ciao a tutti,

grazie alle dritte di Gian Mario, ho risolto l'errore di importazione
libreria con python 3.6.


> ho fatto una verifica con LD_DEBUG=files e lanciato il comando
>
>
> PYTHON2: /mnt/nand/python2.7/bin/python -c "import ctypes as c; libpack =
> c.CDLL('/mnt/nor/libpack.so', mode=c.RTLD_GLOBAL)"
> PYTHON3: /mnt/nand/python3.6/bin/python -c "import ctypes as c; libpack =
> c.CDLL('/mnt/nor/libpack.so', mode=c.RTLD_GLOBAL)"
>
> e le differenze sono su 3 librerie che in python3 non vengono caricate,
> come da dettaglio seguente (output del comando con python 2.7):
>
> Python 2.7 Quelle che seguono sono le librerie caricate da python2.7 ma
non da python3.6

> [...]
> 24305: file=libssl.so.1.0.0 [0];  needed by
> /mnt/nand/python2.7/bin/python [0]
>  24305: file=libssl.so.1.0.0 [0];  generating link map
>  24305:  dynamic: 0x400f1980  base: 0x400a3000   size: 0x00051d6c
>  24305:entry: 0x400b1138  phdr: 0x400a3034  phnum:  5
>  24305:
>  24305:
>  24305: file=libcrypto.so.1.0.0 [0];  needed by
> /mnt/nand/python2.7/bin/python [0]
>  24305: file=libcrypto.so.1.0.0 [0];  generating link map
>  24305:  dynamic: 0x40344378  base: 0x401f6000   size: 0x0015774c
>  24305:entry: 0x40230b4c  phdr: 0x401f6034  phnum:  5
>  24305:
>  24305:
>  24305: file=libz.so.1 [0];  needed by /mnt/nand/python2.7/bin/python
> [0]
>  24305: file=libz.so.1 [0];  generating link map
>  24305:  dynamic: 0x4036b4e0  base: 0x4034e000   size: 0x0001d6fc
>  24305:entry: 0x4034f790  phdr: 0x4034e034  phnum:  5
> [...]
>
> e quindi con LD_DEBUG=symbols ho verificato che proprio una di queste
> contiene il symbol inflateEnd che genera l'errore:
>
> python2
> [...]
>  24749: symbol=syslog;  lookup in file=/lib/libc.so.6 [0]
>  24749: symbol=inflateEnd;  lookup in file=/mnt/nand/python2.7/bin/python
> [0]
>  24749: symbol=inflateEnd;  lookup in file=/lib/libpthread.so.0 [0]
>  24749: symbol=inflateEnd;  lookup in file=/lib/libdl.so.2 [0]
>  24749: symbol=inflateEnd;  lookup in file=/lib/libutil.so.1 [0]
>  24749: symbol=inflateEnd;  lookup in file=/lib/libssl.so.1.0.0 [0]
>  24749: symbol=inflateEnd;  lookup in file=/lib/libcrypto.so.1.0.0 [0]
>  24749: symbol=inflateEnd;  lookup in file=/lib/libz.so.1 [0]
>  24749: symbol=__gmon_start__;  lookup in
> file=/mnt/nand/python2.7/bin/python [0]
>  24749: symbol=__gmon_start__;  lookup in file=/lib/libpthread.so.0
> [0]
> [...]
>
> python3
> [...]
>  24638: symbol=syslog;  lookup in file=/lib/libc.so.6 [0]
>  24638: symbol=inflateEnd;  lookup in file=/mnt/nand/python3.6/bin/python
> [0]
>  24638: symbol=inflateEnd;  lookup in file=/lib/libpthread.so.0 [0]
>  24638: symbol=inflateEnd;  lookup in file=/lib/libdl.so.2 [0]
>  24638: symbol=inflateEnd;  lookup in file=/lib/libutil.so.1 [0]
>  24638: symbol=inflateEnd;  lookup in file=/lib/librt.so.1 [0]
>  24638: symbol=inflateEnd;  lookup in file=/lib/libm.so.6 [0]
>  24638: symbol=inflateEnd;  lookup in file=/lib/libgcc_s.so.1 [0]
>  24638: symbol=inflateEnd;  lookup in file=/lib/libc.so.6 [0]
>  24638: symbol=inflateEnd;  lookup in file=/lib/ld-linux.so.3 [0]
>  24638: symbol=inflateEnd;  lookup in file=/mnt/nor/libpack.so [0]
>  24638: symbol=inflateEnd;  lookup in file=/lib/libgcc_s.so.1 [0]
>  24638: symbol=inflateEnd;  lookup in file=/lib/libc.so.6 [0]
>  24638: symbol=inflateEnd;  lookup in file=/lib/ld-linux.so.3 [0]
>  24638: /mnt/nor/libpack.so: error: symbol lookup error: undefined
> symbol: inflateEnd (fatal)
>  24638: symbol=__dcgettext;  lookup in file=/mnt/nand/python3.6/bin/python
> [0]
>  24638: symbol=__dcgettext;  lookup in file=/lib/libpthread.so.0 [0]
> [...]
>
>
Poi facendo una ricerca online, ho capito che posso forzare il caricamento
della libreria mancante:

Python 3.6.0 (default, Feb 20 2017, 16:41:12)
>>> import ctypes as c
>>> c.CDLL('libz.so.1', mode=ctypes.RTLD_GLOBAL)
>>> libpack=c.CDLL('/mnt/nor/libpack.so')

così non viene più generato l'errore.
In realtà ho risolto ma non ho capito perché alcune librerie sono caricate
come prerequisito da python 2.7 ma non da python 3.6, vedrò di indagare e
riporterò alla lista.

Grazie a tutti.

M.





-- 

*"A parte l'uomo, tutti gli animali sanno che lo scopo principale della
vita è godersela"*
*Samuel Butler*
--
*rosi::LAB di Ro**si Massimiliano*
Mobile: +39 328.3065575
Fax: +39 178.2280639
E-mail: massimiliano.r...@gmail.com
Pec: massimiliano.r...@pec.it
Skype: papipano
LinkedIn: Massimiliano Rosi


"Avvertenze ai sensi del D.Lgs.196 del 30/06/2003
Le informazioni contenute in questo messaggio di posta elettronica
e/o files allegati, sono da considerarsi strettamente riservati.
Il loro utilizzo è consentito esclusivamente al destinatario del
messaggio, per le finalità indicate nello stesso.
Costituisce violazione ai principi dettati dal D.Lgs. 196/200