[Python] Nomi delle costanti modulo 'string'
Ciao a tutti, Volevo chiedere se qualcuno sa perché le costanti del modulo string (es. string.digits) hanno tutti nomi in lowercase diversamente da quanto previsto dalla convenzione PEP8. Mi interessa perché stavo preparando un corso di Python, per colleghi sistemisti e studenti, volendo spiegare anche la scelta di Python di basarsi su convenzioni invece che su statement espliciti. Ciao e grazie Davide -- _ Davide Brunato SISSA - International School for Advanced Studies Information Technology and Computing Services via Bonomea 265 - 34136 Trieste - Italy tel: +39-040-3787538 e-mail: brun...@sissa.it web: http://itcs.sissa.it, http://www.sissa.it ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] Monitor di rete.
On 05/11/2016 13:56, Gollum1 wrote: tempo fa avevo usato una vecchia versione di whatsup gold, che se anche molto spartana, mi permetteva di costruire le mappe della rete, ed attivare dei monitor su eventi (caduta di connessione dei trunk e cose del genere). Visto che abbiamo deciso di rifare la macchina che usiamo per monitorare la rete, volevamo un software analogo, ho provato a scaricare la trial della versione 2017 di whatsup gold, ma non mi piace per niente, troppo conplessa per quello che mi serve, le viste non riesco a costruirle come voglio io (devi avere una vista della struttura della rete intuitica, non autocostruita e dispersiva come la fa lui). Per ultimo...prezzi che vanno dai 1400 euro per la versione base fino ad oltre 4000 euro all'anno, mi pare un po' troppo... Mi chiedevo se qualcuno di voi conosce ed ha avuto esperienza di qualche software open source (anche a pagamento, ma ad una cifra onesta), magari realizzata in python (sarebbe ancora meglio, platform independent, partiamo su un client windows, ma l'intento sarebbe spostarlo su un server linux che sto cercando di mettere in piedi). Qualche anno fa avevo provato Zenoss (Zenoss Core, che è la parte gratuita), poi, non avendo estrema necessità di mappe, ho optato per rimanere su Nagios, affiancandolo con Cacti per il monitoraggio del carico. Comunque Zenoss mi era sembrato buono. In più è scritto prevalentemente in Python. Un software che invece intendevo provare è Shinken (shinken-monitoring.org), altro prodotto scritto in Python. Il motivo principale del mio interesse è che utilizza come base le configurazioni di Nagios, con qualche caratteristica in più rispetto a Nagios Core. N.B.: Come rete devo monitorare al limite qualche centinaio di nodi/server/servizi. ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] python 3.6 & The Case Against Python 3
On 11/23/2016 09:47 AM, Pietro wrote: > > Personalmente non condivido molte delle sue argomentazioni, però > condivido la perplessità che con python 3.6 avremo ben tre modi diversi > di fare lo string formatting. In genere tendo ad usare il vecchio %s > etc, perchè più veloce... certo le f-string sembrano comode... però > questi tre differenti modi per fare la stessa cosa sicuramente > confondono chi inizia il linguaggio. > > Buona giornata > > Pietro > > L'autore mi pare un tantino sopra le righe e fuori dal merito. Il passaggio da ASCII a Unicode andava fatto e non poteva essere indolore. Giusto un anno fa ho tenuto un corso Python per alcuni colleghi, dottorandi e postdoc basandomi su Python 3. Avendo qualche collega Bash-ista e Perl-ista avevo presentato anche la novità delle "f-string" già annunciata per la 3.6. Per me le "f-string" colmano un vuoto per interfacciarsi con l'ambiente e sono in linea con il format(). L'uso del prefisso 'f', similmente ad altre tipologie di letterali stringa, non lascia possibilità di confusione. Ciao Davide ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] setuptools e file di dati
On 04/18/2017 08:30 AM, Dedalus2000 wrote: > > Credo che il mio problema principale sia il fatto che "data_files" non > si comporta correttamente; ciò mi rende difficile scegliere dove mettere > i dati e seguire una qualsiasi struttura predefinita. > > Secondo la documentazione la dir. indicata è relativa a "sys.prefix", ma > non è così. Ad esempio, considerando che sys.prefix ='/usr' con > data_files=[ ['prova', ['data1/ff1.dat'']] > > ottengo: > /usr/local/lib/python2.7/dist-packages/project1-0.1-py2.7.egg/prova/ff1.dat > > Ma se compilo il '.deb.' ottengo > /usr/prova/ff1.dat > > Nell'EGG include tutto quello che fa parte del pacchetto. Per installare solo i data files c'è un comando apposito: python setup.py install_data Oppure mettendo un path assoluto dovrebbe farlo direttamente con install. > Ho problemi con package_data a causa del fatto che i dati sono a livello > del setup. Ad esempio dovrei scrivere: > package_data={'mioprogetto': ['../../data1/*.dat']} > > ma ovviamente non funziona. Devono essere pattern relativi a sottodirectory della directory base del package ("src/mioprogetto" nel tuo test). Quindi prima sposti data1/ in src/mioprogetto/ e poi specifichi: package_data={'mioprogetto': ['data1/*.dat']}, I file dati vengono installati nella directory del package (es. /usr/lib/python2.7/site-packages/project1-0.1-py2.7.egg/mioprogetto/data1/). Ciao Davide ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] Scacchi
On 05/04/2017 06:15 PM, Gabriele Battaglia wrote: > Salve. > C'è qualche appassionato di scacchi fra voi? > Qualcuno ha mai provato a realizzare un progetto che riguardi questo > bellissimo gioco. Ed in fine, la domanda principale: conoscete qualche > libreria scacchistica? Intendo un parser per il formato pgn, o, più > semplicemente, un controllore della legalità delle mosse. Non un motore vero > e proprio, ma una qualche libreria che insegni a Python le regole degli > scacchi. > Grazie. > Gabry. > > Inviato da Gabryphone 7 Plus. > ___ > Python mailing list > Python@lists.python.it > http://lists.python.it/mailman/listinfo/python > Sì, facevo tornei anni fa, ora avendo meno tempo faccio qualche partita ogni tanto. Avendo letto il libricino di Paolo Ciancarini avevo provato a fare qualcosa, se non ricordo male proprio in Python. Comunque per la tua domanda principale: hai provato a vedere PyChess? E' un programma scritto interamente in Python molto strutturato (ha un engine suo ma può usare anche altri engine) che dovrebbe includere anche parti per analizzare le mosse. ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] Tipo: byte.
On 06/22/2017 09:14 PM, Gabriele Battaglia wrote: > Avvicinandomi a Python 3, ho qualche difficoltà ad afferrare il concetto > di tipo Byte. > Se doveste spiegarlo in parole semplice, cosa direste e/o quale risorsa > mi consigliereste di leggere? In poche parole il tipo 'bytes' rappresenta le stringhe ASCII in Python 3. In Python 3 il tipo 'str' rappresenta stringhe Unicode ("le stringhe sono per default Unicode ..."), mentre in Python 2 'bytes' e 'str' erano lo stesso tipo, serviva per rappresentare stringhe ASCII, e c'era un tipo distinto per rappresentare stringhe Unicode (tipo 'unicode', che in Python 3 non c'è più). Verificando il tipo dei letterali stringa in Python 3: type(b'ciao') # type('ciao') # type(u'ciao') # mentre in Python 2.7: type(b'ciao') # type('ciao') # type(u'ciao') # -- _ Davide Brunato SISSA - International School for Advanced Studies Information Technology and Computing Services via Bonomea 265 - 34136 Trieste - Italy tel: +39-040-3787538 e-mail: brun...@sissa.it web: http://itcs.sissa.it, http://www.sissa.it ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] Iteratori iterabile
On 07/05/2017 08:53 PM, Franky gmail wrote: > 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__() > lista1 è un'iteratore, non più una lista e il metodo __iter__ serve appunto per creare iteratori: iteratore_lista = iter(lista) next(iteratore_lista) # 'pippo' next(iteratore_lista) # 'pluto' next(iteratore_lista) # 'paperoga' next(iteratore_lista) # raise StopIteration comunque per capire bene la tematica degli iteratori (e dei generatori) a me è stato utile questo articolo: http://nvie.com/posts/iterators-vs-generators/ (NB: la figura ad inizio articolo me la sono stampata e appesa bacheca per quando mi vengono dei dubbi ...) ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] raise end exception
On 04/25/2018 11:38 AM, Gollum1 wrote: > nell'esecuzione mi ritrovo il modulo PIL che in alcune situazioni non > alza una eccezione, ma ritorna una stringa di errore, come la > seguente: > > /usr/lib/python3/dist-packages/PIL/TiffImagePlugin.py:756: > UserWarning: Corrupt EXIF data. Expecting to read 12 bytes but only > got 4. > warnings.warn(str(msg)) > > il codice non viene interrotto (non essendo una eccezione) e non posso > quindi gestire l'errore in modo diverso... > > esiste una qualche metodologia per creare anche in questo caso una > exception che sia sollevata con raise? > > Grazie. > Si tratta sempre di una eccezione solo che per default non viene "sollevata". Devi vedere la libreria 'warnings' se vuoi customizzare questo comporamento. -- _ Davide Brunato SISSA - International School for Advanced Studies Information Technology and Computing Services via Bonomea 265 - 34136 Trieste - Italy tel: +39-040-3787538 e-mail: brun...@sissa.it web: http://itcs.sissa.it, http://www.sissa.it ___ Python mailing list Python@lists.python.it https://lists.python.it/mailman/listinfo/python
Re: [Python] Break in un generatore
On 07/25/2018 11:56 PM, Lorenzo Mainardi wrote: > Sto iterando su un generatore e vorrei usare una break per passare al > prossimo elemento. > Break mi esce direttamente dal "ciclo", così come raise StopIteration. > C'è un modo per farlo? > > -- > LORENZO MAINARDI > > Penso che per passare al prossimo elemento del generatore devi usare l'istruzione "continue". ___ Python mailing list Python@lists.python.it https://lists.python.it/mailman/listinfo/python
Re: [Python] Sintassi sconosciuta...
On 10/16/18 1:06 PM, Alessandro Dentella wrote: > mi sono accorto dopo tanti anni di uso di Python di non avere idea di > questa sintassi: > > [tmp_loc] = glob.glob(os.path.join(tmp_dest, '*')) > > che trovate usata qui: > > #L1740 > > Che cosa fa? che senso ha usarla quando mi vengono in mente vari altri > modi di ottenere quello che (forse, penso) faccia. > > Soprattutto, quella riga st creandomi problemi... > > Chi mi sa illuminare? > Può servire ad estrarre da un iterabile/lista/tupla una sequenza di valori, generando un errore in caso di discordanza nel numero di elementi o se l'operando a destra non è un iterabile: >>> [a] = 1 Traceback (most recent call last): File "", line 1, in TypeError: 'int' object is not iterable >>> [a] = 1, >>> a 1 >>> [a] = 1, 2 Traceback (most recent call last): File "", line 1, in ValueError: too many values to unpack >>> [a] = [] Traceback (most recent call last): File "", line 1, in ValueError: need more than 0 values to unpack Credo sia equivalente alla sintassi con parentesi tonde, o a quella con virgole, usata solitamente per il doppio assegnamento: >>> a, b = [4, 5] >>> a, b (4, 5) >>> a, = [6] >>> a 6 Ciao Davide ___ Python mailing list Python@lists.python.it https://lists.python.it/mailman/listinfo/python
Re: [Python] Domanda da super niubbo sui generatori.
On 3/10/21 9:03 AM, Gabriele Battaglia wrote: Buondì. Sono nuovissimo nell'uso dei generatori, non li ho mai studiati ne usati prima. Ora devo colmare questa laguna d'ignoranza, la "g" non è un refuso! :) Vi chiedo 2 sciocchezze, per favore rispondete col metodo AIAF: As I am Five... si scriverà così? :) Dunque, ho questo generatore qui: import os filesys = os.walk(os.getcwd()) So che posso fare una cosa del tipo: for root, folders, files in filesys: print(f"Root is {root}") ...eccetera eccetera. Ma se volessi sapere solo la root e basta, come la tirerei fuori dal generatore? O, in altre parole, esiste solo il ciclo for, che mi permette diciamo di guardarci dentro? Grazie. Gabry. Ciao, un generatore è a tutti gli effetti un oggetto iteratore pronto all'uso, non serve necessariamente il for per gestire la sequenza di valori generata, ma basta applicare la funzione next(). Nel tuo esempio potrebbe essere: try: root, folders, files = next(filesys) except StopIteration: pass # o interrompi i ciclo se se in un while ... else: ... # usi i 3 valori ottenuti oppure puoi applicare un default appropriato quando chiami next(): root, folders, files = next(filesys, ('', [], [])) if root != '': ... # usi i 3 valori ottenuti ___ Python mailing list Python@lists.python.it https://lists.python.it/mailman/listinfo/python
[Python] Offerta di lavoro per project leader di sviluppo software
Ciao a tutte/i, SISSA Medialab cerca una persona per la gestione, progettazione e sviluppo di un progetto open source per un nuovo sistema di gestione peer review e pubblicazione di articoli scientifici. Sono richieste ottime conoscenze del framework Django e di Python. La sede di lavoro è Trieste con la possibilità di parziale remote working. Per i dettagli sulla posizione aperta consultare la pagina al seguente link: https://medialab.sissa.it/it/chi-siamo-0 Davide Brunato SISSA - Trieste ___ Python mailing list Python@lists.python.it https://lists.python.it/mailman/listinfo/python