Re: [Python] Aggiungere testo all'inizio di un file.
Mi sa proprio di sì, sai? Infatti ti conviene forse aprire un file temporaneo, scrivere il nuovo testo, aggiungere il testo del file originale, cancellarlo e rinominare il file temporaneo nel file originale. Ma solo se il testo è tanto. Ciao. Marco. On Sat, 18 May 2024, 19:30 Gabriele Battaglia, wrote: > Ciao. Ho passato "ta+" ad open per apprire un file di testo in modalità > append. Vorrei aggiungere il testo in cima, non in fondo. > > E' possibile o devo farlo io a mano caricando il contenuto in una > variabile, aggiungendo in cima ciò che voglio e poi salvando tutto nel > file? > > Grazie. > > -- > Gabriele Battaglia (IZ4APU) > --... ...-- -.. . .. --.. - .- .--. ..- - ..- . . > Sent from my Giant Desktop PC > > ___ > Python mailing list > Python@lists.python.it > https://lists.python.it/mailman/listinfo/python > ___ Python mailing list Python@lists.python.it https://lists.python.it/mailman/listinfo/python
[Python] CODICE ASCII
Buonasera. Vedo delle cose strane con i codici ASCII: non tutti i codici corrispondono alle tabelle sia quando si inseriscono con ALT+codice e sia quando si usa chr(codice) all'interno di un listato. Ad esempio, il codice 123 è la graffa aperta { e viene sia con ALT+123 sia con chr(123). Lo stesso vale per la @ che è 64 e così via per tanti altri. Con altri codici, invece, non funziona. ESEMPIO: ALT+187 da il simbolo* ╗* con chr(187) dà ». Avete idea del perchè? Grazie della collaborazione Marco Monti cell. 340 7200207 ___ Python mailing list Python@lists.python.it https://lists.python.it/mailman/listinfo/python
Re: [Python] LISTE E RANDOM
On Mon, 12 Feb 2024, 21:25 Mauro Casini, wrote: > Marco Beri writes: > > >> cas_lst = random.choice((reg_ita, naz_eur, pro_ita)) > >> cas_fin = random.choice(cas_lst) > > > > Non è quello che vuole fare lui. > > > > Lui vuole scegliere a caso tra reg_cas, naz_cas e pro_cas. > > È la stessa cosa: un elemento casuale con prob. 1/3 reg, 1/3 naz, 1/3 > pro. È inutle sorteggiare un elemento da ogni lista per poi scartarne > due, basta estrarne uno solo da una lista scelta a caso fra le tre, > Ah, giusto. Sono stato avventato :-) Così ti risparmi due random.choice. Ciao. Marco. ___ Python mailing list Python@lists.python.it https://lists.python.it/mailman/listinfo/python
Re: [Python] LISTE E RANDOM
Il giorno lun 12 feb 2024 alle ore 19:42 Mauro Casini < ma...@iperbole.bologna.it> ha scritto: > Marco Monti writes: > > > reg_cas=random.choice(reg_ita) > > naz_cas=random.choice(naz_eur) > > pro_cas=random.choice(pro_ita) > > cas_fin=random.choice(reg_cas+pro_cas+naz_cas) > > Da errore. Non so come fare > > cas_lst = random.choice((reg_ita, naz_eur, pro_ita)) > cas_fin = random.choice(cas_lst) > Non è quello che vuole fare lui. Lui vuole scegliere a caso tra reg_cas, naz_cas e pro_cas. Ciao. Marco. ___ Python mailing list Python@lists.python.it https://lists.python.it/mailman/listinfo/python
Re: [Python] LISTE E RANDOM
Il giorno lun 12 feb 2024 alle ore 16:20 Esalando Prassi < alessandro.p...@katamail.com> ha scritto: > Credo tu voglia fare qualcosa tipo: > > ``` > random.choice(reg_ita + naz_eur + pro_ita) > ``` > Io invece punto su: cas_fin=random.choice((reg_cas, pro_cas, naz_cas)) Ciao. Marco. > > ___ Python mailing list Python@lists.python.it https://lists.python.it/mailman/listinfo/python
[Python] LISTE E RANDOM
Buongiorno. Sto usando liste e tuple e non so come risolvere un problema sulla diversa numerosità degli oggetti. Mi spiego meglio. In un test di geografia ho inserito una lista delle 20 regioni italiane, una lista delle 25 nazioni europee e una lista delle circa 100 province italiane. Dato che le 100 provincie italiane sono numericamente ben superiori alle nazioni e alle regioni la scelta casuale fa uscire quasi sempre le provincie. Non trovo un modo per bilanciare la scelta casuale. Ho pensato di fare una scelta casuale differenziata: scelta solo fra le nazioni, solo fra le regioni, solo fra le provincie. Poi fare una scelta fra le suddette tre. Mi dà errore. reg_ita=[] naz_eur=[] pro_ita=[] reg_cas=random.choice(reg_ita) naz_cas=random.choice(naz_eur) pro_cas=random.choice(pro_ita) cas_fin=random.choice(reg_cas+pro_cas+naz_cas) Da errore. Non so come fare Marco Monti cell. 340 7200207 ___ Python mailing list Python@lists.python.it https://lists.python.it/mailman/listinfo/python
Re: [Python] Questo, da Python, non me lo sarei mai aspettato
Il giorno lun 12 feb 2024 alle ore 09:36 Daniele Zambelli < daniele.zambe...@gmail.com> ha scritto: > Lo strano per me è che il valore di default dovrebbe essere una lista > vuota ogni volta che chiamo la funzione invece la seconda volta è una > lista con i valori che sono stati inseriti dalla funzione nella > chiamata precedente. > Cioè due chiamate identiche della funzione hanno effetti differenti. > Mi pare che non rispetti il principio di non side effect (se si dice così). > Daniele, il non side effect non si applica quando il valore di default di un parametro è un mutable (lista o set o dict). Pensa che a volte si usa questo per memoizzare brutalmente una funzione. Esempio: def quadrato(n, cache={}): try: return cache[n] except KeyError: pass print("calcolo") q = cache[n] = n*n return q >>> quadrato(10) calcolo 100 >>> quadrato(10) 100 Ciao. Marco. ___ Python mailing list Python@lists.python.it https://lists.python.it/mailman/listinfo/python
Re: [Python] [PYTHON] Verificare se una stringa contiene dei caratteri
Il giorno gio 30 nov 2023 alle ore 18:02 Valerio Pachera ha scritto: > Ciao a tutti, devo fare una cosa relativamente, verificare se in una > stringa (*in qualsiasi punto*) ci sono certi caratteri. > > Voi cosa fareste? > p = re.compile('.*[xyz].*') Ciao. Marco. ___ Python mailing list Python@lists.python.it https://lists.python.it/mailman/listinfo/python
Re: [Python] [PYTHON] Suggerimento framework
Io userei Flask, e' semplice da usare e completo On 19.07.2023 12:55, Valerio Pachera wrote: Buongiorno a tutti, vi chiedo un consiglio: vorrei realizzare una pagina web che NON richiede autenticazione, dove posso fare upload di un file deve esserci un controllo sulla dimensione del file una volta caricato il file lato server deve essere eseguito con comando che lo leggere e ritorna del testo come output; l'output deve essere visualizzato nella pagina. Ho un discreta confidenza con python ma poco background di programmazione web. Che approccio / framework mi consigliate? Grazie. ___ Python mailing list Python@lists.python.it https://lists.python.it/mailman/listinfo/python ___ Python mailing list Python@lists.python.it https://lists.python.it/mailman/listinfo/python
Re: [Python] [python] escludere righe vuote o commentate
On 03.02.2023 14:15, Andrea D'Amore wrote: Oppure in maniera "più funzionale" with open(filename) as file: clean = filter(lambda x: x and not x.startswith("#"), map(lambda x: x.strip(), open(filename))) La seconda ti dà un generatore, te lo espandi con list() se ti serve ma in genere meglio ritardare il loro consumo a quando ti serve effettivamente. Solo una nota a proposito di questa soluzione. Se il generatore non e' consumato dentro il blocco with, diventa inusable. All'uscita dal blocco il file viene chiuso e alla prima iterazione, si cerca di leggere da un file chiuso. ___ Python mailing list Python@lists.python.it https://lists.python.it/mailman/listinfo/python
Re: [Python] [python] escludere righe vuote o commentate
On Sun, 5 Feb 2023, 12:01 Valerio Pachera, wrote: > > > Il giorno mer 1 feb 2023 alle ore 12:43 Marco Giusti < > marco.giu...@posteo.de> ha scritto: > >> for line in open(filename): >> if line.strip() and not line.startswith("#"): >> clean.append(line) >> >> > Credo vada modificato così, altrimenti le righe che iniziano con degli > spazi e seguire da un cancelletto vengono aggiunte alla lista: > > for line in open(filename): > line = line.strip() > if line and not line.startswith("#"): > clean.append(line) > Non solo: così correttamente aggiungi le linee "strippate" mentre lui aggiunge le linee con gli spazi. Ciao. Marco. > ___ Python mailing list Python@lists.python.it https://lists.python.it/mailman/listinfo/python
Re: [Python] [python] escludere righe vuote o commentate
On 01.02.2023 11:23, Valerio Pachera wrote: Il giorno mer 1 feb 2023 alle ore 10:25 Valerio Pachera ha scritto: Ciao a tutti, vorrei ottenere lo stesso risultato di grep -Ev '(^[[:blank:]]*$|^#)' Per ora ho usato questo approccio: with open('file.txt') as f: p = re.compile('^s*$|^#.*') clean = [line for line in f.readlines() if not re.match(p, line)] clean è una lista con le righe "buone" del file. Notare che mantengono il n alla fine. Per stampare quindi il contenuto mi basta fare join di una stringa vuota. print(''.join(clean)) Nel mio caso specifico voglio poi portare tutto su una singola riga. In tal caso, devo rimuovere il fine riga (usando strip) e fare il join usando uno spazio. with open('template.txt') as template_content: p = re.compile('^s*$|^#.*') clean = [line.STRIP() for line in template_content.readlines() if not re.match(p, line)] print(' '.join(clean)) Sono comunque curioso di vedere altre implementazioni :-) filename = "/etc/firejail/firejail.config" clean = [] for line in open(filename): if line.strip() and not line.startswith("#"): clean.append(line) print(clean) ['browser-disable-u2f no\n', 'restricted-network yes\n'] Se questa fosse una risposta in StackOverflow, sono sicuro che qualcuno riprenderebbe la soluzione per trasformarla in una linea sola. ___ Python mailing list Python@lists.python.it https://lists.python.it/mailman/listinfo/python
Re: [Python] Problemi di deploy di web app su heroku
Matteo, non credo mi servirà, ma ci tengo a ringraziarti perché hai proprio compreso lo spirito della mailing list, scrivendo un messaggio solo per gli altri. Grazie. Ciao. Marco. On Sat, 21 Jan 2023, 11:45 Perini Matteo, wrote: > Buongiorno a tutti, > > dopo svariate vicissitudini con docker, gunicorn e heroku, sono riuscito a > fare il deploy della mia app. > > Per futura memoria una delle cose che mi ha fatto perdere più tempo è legata > a gunicorn. > > In particolare il deploy va fatto lanciando il comando: > > gunicorn app:app -b 0.0.0.0:$PORT > > Molte guide online suggeriscono il deploy impostando una porta fissa tipo > 0.0.0.0:5000 ma questo non permette ad heroku di fare il binding delle porte. > > Magari prima o poi serve anche a qualcun altro > > Grazie mille a tutti dell'aiuto. > > Ciao > > matteo > > ___ > Python mailing list > Python@lists.python.it > https://lists.python.it/mailman/listinfo/python > ___ Python mailing list Python@lists.python.it https://lists.python.it/mailman/listinfo/python
Re: [Python] Problemi di deploy di web app su heroku
E' questo il pacchetto che devi installare [1]? Guardando alle istruzione di installazione [2], non credo che sia possibile create un file whl, quindi cercherei di risolvere la compilazione del pacchetto dentro Heroku stesso. [1] https://github.com/tpaviot/pythonocc-core [2] https://github.com/tpaviot/pythonocc-core/blob/master/INSTALL.md On 10.01.2023 09:50, Marco Giusti wrote: Ciao Matteo, provo ad aiutarti, ma non ho esperienza ne' con Heroku ne' con Conda. Faccio qualche ipotesi che poi tocca a te verificare. Le librerie scritte in C/C++ sono più complicate delle librerie in puro python perché non sempre si ha un compilatore o tutte le dipendenze disponibili. Inoltre il codice oggetto compilato non è generalmente portabile da una macchina ad un'altra. Il mio primo consiglio è di cercare di risolvere la compilazione di pyOCC in Heroku, perché mi sembra di capire che hai un compilatore disponibile. Posta l'output di pip quando installi la tua web app e forse ti possiamo aiutare con quello. Se compilare pyOCC in Heroku non è possibile, puoi provare a creare un whl localmente di pyOCC e usare quello in Heroky. Anche se compilare i file whl dovrebbero essere più portabili, fermo stante che la versione dell'interprete e l'architettura siano le stesse. Sono quasi sicuro che al momento dell'installazione puoi dire a pip dove andare a cercare i pacchetti da installare. Marco On 09.01.2023 19:17, Perini Matteo wrote: Ciao a tutti, vi chiedo aiuto perchè sto riscontrando problemi a fare il deploy di una web app flask su heroku. Credo che il problema stia nella creazione del virtual env su heroku. L'app che ho costruito fa uso di varie librerie, tutte tranne una installabili tramite pip. Una invece, PyOCC (porting per python di OpenCascade), non sono riuscito ad installarla ne con pip ne compilando i sorgenti. Fortunatamente ho trovato un pacchetto conda già pronto e ho portato avanti tutto lo sviluppo dell'app in un conda env (pensando non vi fosse grande differenza con venv). Adesso però per fare il deploy su heroku ho scoperto che bisogna generare da conda un requirements.txt che poi viene usato dallo script di heroku per creare l'ambiente (usando venv se non sbaglio). Visto che non ne vengo a capo e il deploy si "rompe" sempre (penso perchè pip non riesce ad installare pyOCC), ho pensato di copiare la libreria OCC dall'environment conda alla mia cartella di progetto in modo da portarla dentro heroku come sorgente. Naturalmente in locale tutto funziona bene. Non so se ho spiegato abbastanza bene la situazione ma arrivo alle domande: 1) Ho capito bene? heroku usa venv? non posso usare un conda env in heroku giusto? 2) Se volessi spostare una libreria dall'ambiente conda alla cartella locale del progetto c'è un modo per farlo? come posso fare a importare OCC in modo corretto? 3) Ho provato a copiare la cartella OCC da conda in locale e cambiare tutti gli import per far puntare alla nuova cartella ma ottengo "segfault". Ipotizzo che sia dovuto al fatto che è un porting da C++. Idee? 4) avete altri suggerimenti? E' la mia prima flask app un po' articolata e non sono molto esperto. Grazie per ogni aiuto. Ciao Matteo ___ Python mailing list Python@lists.python.it https://lists.python.it/mailman/listinfo/python ___ Python mailing list Python@lists.python.it https://lists.python.it/mailman/listinfo/python
Re: [Python] Problemi di deploy di web app su heroku
Ciao Matteo, provo ad aiutarti, ma non ho esperienza ne' con Heroku ne' con Conda. Faccio qualche ipotesi che poi tocca a te verificare. Le librerie scritte in C/C++ sono più complicate delle librerie in puro python perché non sempre si ha un compilatore o tutte le dipendenze disponibili. Inoltre il codice oggetto compilato non è generalmente portabile da una macchina ad un'altra. Il mio primo consiglio è di cercare di risolvere la compilazione di pyOCC in Heroku, perché mi sembra di capire che hai un compilatore disponibile. Posta l'output di pip quando installi la tua web app e forse ti possiamo aiutare con quello. Se compilare pyOCC in Heroku non è possibile, puoi provare a creare un whl localmente di pyOCC e usare quello in Heroky. Anche se compilare i file whl dovrebbero essere più portabili, fermo stante che la versione dell'interprete e l'architettura siano le stesse. Sono quasi sicuro che al momento dell'installazione puoi dire a pip dove andare a cercare i pacchetti da installare. Marco On 09.01.2023 19:17, Perini Matteo wrote: Ciao a tutti, vi chiedo aiuto perchè sto riscontrando problemi a fare il deploy di una web app flask su heroku. Credo che il problema stia nella creazione del virtual env su heroku. L'app che ho costruito fa uso di varie librerie, tutte tranne una installabili tramite pip. Una invece, PyOCC (porting per python di OpenCascade), non sono riuscito ad installarla ne con pip ne compilando i sorgenti. Fortunatamente ho trovato un pacchetto conda già pronto e ho portato avanti tutto lo sviluppo dell'app in un conda env (pensando non vi fosse grande differenza con venv). Adesso però per fare il deploy su heroku ho scoperto che bisogna generare da conda un requirements.txt che poi viene usato dallo script di heroku per creare l'ambiente (usando venv se non sbaglio). Visto che non ne vengo a capo e il deploy si "rompe" sempre (penso perchè pip non riesce ad installare pyOCC), ho pensato di copiare la libreria OCC dall'environment conda alla mia cartella di progetto in modo da portarla dentro heroku come sorgente. Naturalmente in locale tutto funziona bene. Non so se ho spiegato abbastanza bene la situazione ma arrivo alle domande: 1) Ho capito bene? heroku usa venv? non posso usare un conda env in heroku giusto? 2) Se volessi spostare una libreria dall'ambiente conda alla cartella locale del progetto c'è un modo per farlo? come posso fare a importare OCC in modo corretto? 3) Ho provato a copiare la cartella OCC da conda in locale e cambiare tutti gli import per far puntare alla nuova cartella ma ottengo "segfault". Ipotizzo che sia dovuto al fatto che è un porting da C++. Idee? 4) avete altri suggerimenti? E' la mia prima flask app un po' articolata e non sono molto esperto. Grazie per ogni aiuto. Ciao Matteo ___ Python mailing list Python@lists.python.it https://lists.python.it/mailman/listinfo/python ___ Python mailing list Python@lists.python.it https://lists.python.it/mailman/listinfo/python
Re: [Python] confronto nan dentro le tuple
Il giorno dom 11 dic 2022 alle ore 15:33 Andrea D'Amore ha scritto: > On Fri, 9 Dec 2022 at 19:20, Marco De Paoli wrote: > > > in realtà la cosa è anche un po' più subdola di così, infatti istanze > diverse di nan ... sono diverse! > > > >>> import math > > >>> math.nan is math.nan # OK, identity > > True > > >>> float("nan") is float("nan") # ... OOOK, different instances! > > False > > Questo però ci sta, al netto delle ottimizzazioni di CPython quando > inizializzo nuove istanze mi aspetto oggetti che siano effettivamente > diversi > > >>> int("123456789") is int("123456789") > False > sì, vero, è coerente ciao ___ Python mailing list Python@lists.python.it https://lists.python.it/mailman/listinfo/python
Re: [Python] confronto nan dentro le tuple
Il giorno gio 8 dic 2022 alle ore 06:37 Andrea D'Amore ha scritto: > On Wed, 7 Dec 2022 at 18:40, Marco De Paoli wrote: > > Mi viene il dubbio che nel confronto tra tuple venga valutata una > identità tra oggetti... ma, al momento, non riesco ad approfondire la > questione > > Il confronto tra sequenze usa `is` come scorciatoia invece di `==`. > > https://docs.python.org/3/reference/expressions.html#comparisons > """Sequences compare lexicographically using comparison of > corresponding elements. The built-in containers typically assume > identical objects are equal to themselves. That lets them bypass > equality tests for identical objects to improve performance and to > maintain their internal invariants.""" è vero, grazie in realtà la cosa è anche un po' più subdola di così, infatti istanze diverse di nan ... sono diverse! >>> import math >>> math.nan is math.nan # OK, identity True >>> float("nan") is float("nan") # ... OOOK, different instances! False Dalla regia (grazie CM) mi segnalano questo riferimento: https://bugs.python.org/issue21873#msg221608 e questo esempio: >>> set([nan, nan]) {nan} time: 19 ms (started: 2022-12-07 19:14:16 +01:00) >>> set([float('nan'), float('nan')]) {nan, nan} time: 8.54 ms (started: 2022-12-07 19:14:34 +01:00) bye, M ___ Python mailing list Python@lists.python.it https://lists.python.it/mailman/listinfo/python
[Python] confronto nan dentro le tuple
ciao lista, come va? una domanda su math.nan Il valore math.nan è un non-valore quindi è corretto che non sia considerato uguale neanche a se stesso. https://docs.python.org/3/library/math.html#math.nan La mia sorpresa è che invece nei confronti tra tuple i nan vengono considerati uguali Esempio: >>> from math import nan >>> nan == nan # False as expected False >>> (10, nan) == (10, nan) # ... WOW True Mi viene il dubbio che nel confronto tra tuple venga valutata una identità tra oggetti... ma, al momento, non riesco ad approfondire la questione ... voi ne sapete di più? (non ho dubbi! ;-) ) bye, Marco ___ Python mailing list Python@lists.python.it https://lists.python.it/mailman/listinfo/python
Re: [Python] Info su cancellazione traceback
On 19.11.2022 08:45, Matteo Boscolo wrote: Buongiorno a tutti, vorrei cancellare il traceback di python e mostrare solo il mio raise, questa cosa mi serve per evitare che lo stack dell'errore venga visto in console. ho provato con questo decoratore def avoid_traceback(message=''): ''' call a function a number of times ''' def decorate(fn): @wraps(fn) def wrapper(*args, **kwargs): try: result = fn(*args, **kwargs) except Exception as ex: if message: raise Exception(message) raise Exception("Error on method %s" % fn.__name__) return result return wrapper return decorate che funziona, ma il traceback resta attivo, nel senso che se metto traceback.print_exc() mi vedo tutto lo stack dell'errore: Traceback (most recent call last): File "/media/OneTDisk/workspace/test.py", line 133, in wrapper result = fn(*args, **kwargs) File "/media/OneTDisk/workspace/test.py", line 218, in rise raise Exception("rise") Exception: rise potete provare con questo esempietto qua: class A(object): def __init__(self): pass @avoid_traceback("errore generico")# def rise1(self): return self.rise() @avoid_traceback("errore generico")# def rise(self): raise Exception("rise") a=A() a.rise1() traceback.print_exc() ho trovato in rete https://www.programcreek.com/python/example/119512/traceback.clear_frames ma sembra che non funzioni.. qualche idea ? Ciao Matteo, vorrei premettere che non trovo sia una buona idea nascondere informazioni quando si ha a che fare con delle eccezioni, anzi, piu' informazioni ci sono e meglio e'. Comunque, usa il costrutto raise exception from None Quando lanci un'eccezione al momento in cui ne stai gia' gestendo un'altra, le due eccezioni sono concatenate in due punti: __context__ e __cause__. Il primo attributo e' settato automaticamente e per sovrascriverlo hai bisogno di un ulteriore blocco try/except. Non farlo, perche' per visualizzare il traceback e' usato __suppress_context__. Se il valore e' False, allora viene visualizzato __cause__ o __context__, se il valore e' True, allora la precedente eccezione non e' visualizzata. Usando "raise ... from None: ottieni gia' quello che desideri: __cause__ e' settato to None e __suppress_context__ e' settato to True. Ecco qualche esempio usando sempre questo codice e usando il decoratore "avoid_traceback" solo sul metodo "rise1". a = A() try: a.rise1() except Exception as exc: print(f"exc.__cause__: {exc.__cause__}") print(f"exc.__suppress_context__: {exc.__suppress_context__}") print(f"exc.__context__: {exc.__context__}") raise traceback.print_exc() Esempio 1, lasciando il decoratore invariato: $ python3 hide_traceback.py exc.__cause__: None exc.__suppress_context__: False exc.__context__: rise Traceback (most recent call last): File "/home/marco/hide_traceback.py", line 11, in wrapper result = fn(*args, **kwargs) File "/home/marco/hide_traceback.py", line 27, in rise1 return self.rise() File "/home/marco/hide_traceback.py", line 30, in rise raise Exception("rise") Exception: rise During handling of the above exception, another exception occurred: Traceback (most recent call last): File "/home/marco/hide_traceback.py", line 35, in a.rise1() File "/home/marco/hide_traceback.py", line 14, in wrapper raise Exception(message) Exception: errore generico Esempio 2, usando raise ... from None $ python3 hide_traceback.py exc.__cause__: None exc.__suppress_context__: True exc.__context__: rise Traceback (most recent call last): File "/home/marco/hide_traceback.py", line 35, in a.rise1() File "/home/marco/hide_traceback.py", line 14, in wrapper raise Exception(message) from None Exception: errore generico Esempio 3, usando un ulteriore blocco try/catch ... try: try: result = fn(*args, **kwargs) except Exception as ex: if message: raise Exception(message) from None raise Exception("Error on method %s" % fn.__name__) from None except Exception as exc: exc.__context__ = None raise exc $ python3 hide_traceback.py exc.__cause__: None exc.__suppress_context__: True exc.__context__: None Traceback (most recent call last): File "/home/marco/hide_traceback.py", line 39, in a.rise1() File "/home/marco/hide_traceback.py", line 19, in wrapper raise exc
Re: [Python] Da intero a stringa in base62.
On Tue, 15 Nov 2022 at 15:07, Daniele Zambelli wrote: > Il giorno mar 15 nov 2022 alle ore 15:02 ha scritto: > > [...] > > > if n<=0: return "0" > > Non mi pare carino che tutti i numeri negativi vengano resi come 0! > Daniele, mi hai tolto le parole di tastiera ;-) Ciao. Marco. ___ Python mailing list Python@lists.python.it https://lists.python.it/mailman/listinfo/python
Re: [Python] Azure functions
ciao Giovanni, Il giorno mer 19 ott 2022 alle ore 14:30 Giovanni Porcari < giovanni.porc...@softwell.it> ha scritto: > Possibilmente. Mi arroccherei su quello :D > ... intendi sul fatto che non ci sarebbe lxml ;-) ad ogni modo pare che l'offerta al cliente la si farà "per il caso peggiore" (in cui qualcuno, che non sarei io, dovrà riscrivere tutto in C#) Entro quando il lavoro sarà effettivamente da fare io un'occhiata ad IronPython ho intenzione di darla Mi viene in mente che potrebbe tornarmi utile anche per un'altra vecchia utility che avevo fatto e che gira come servizio-Windows. Al momento, per utilizzarla, richiede che installino python e pywin32. Infatti, non avevo mai avuto tempo di fare un packaging per Windows (e avevo sempre pensato che non fosse banale fare un packaging di qualcosa che ha dentro pywin32 con pythonservice.exe). Potrei valutare IronPython: che magari 1) mi evita le pywin32 e 2) si occupa lui di fare il build di un exe (che dipende da .net, ok) e 3) mi permette di provarlo, per sommi capi, anche su linux con mono Qualcuno ha esperienze in merito? bye, M. ___ Python mailing list Python@lists.python.it https://lists.python.it/mailman/listinfo/python
Re: [Python] Azure functions
Il giorno mar 18 ott 2022 alle ore 17:40 Nicola Gramola < nicola.gram...@gmail.com> ha scritto: > Hai provato a vedere se riesci a “compilare” con IronPython. Non penso sia > molto aggiornato ma è un tentativo > sì, grazie, verifico anche se sembra un po' un problema disporre di lxml in questo caso... ___ Python mailing list Python@lists.python.it https://lists.python.it/mailman/listinfo/python
[Python] Azure functions
ciao a tutti, domanda niubba... ho del codice python (... ovviamente! visto: 1. la lista a cui mi rivolgo e 2. le mie radicate preferenze personali ;-) ) ora, questo codice dovrebbe girare su un portale Azure E mi dicono che deve essere ... "un tool unico possibilmente in una tecnologia .Net (leggi C#/NET6). Probabilmente sarà parte di una Azure Function o di una API, quindi, sarebbe comodo fosse sotto forma di una libreria e/o pacchetto NuGet." arghh! potreste mica darmi qualche dritta? ... non sono precisamente entusiasta della prospettiva di dover riscrivere il tutto in C# grazie, Marco P.S. questo codice preesistente avrebbe dipendenza dal pacchetto lxml ___ Python mailing list Python@lists.python.it https://lists.python.it/mailman/listinfo/python
Re: [Python] import error.
ciao Gabriele Il giorno gio 13 ott 2022 alle ore 21:36 Gabriele Battaglia < iz4...@libero.it> ha scritto: > Ciao, questa sera mi è comparso un errore che non avevo ancora incontrato. > Avevo una riga, ad inizio script, con la quale importavo 4 moduli: 3 in > una istruzione import e uno in una istruzione from ... import. > > isort mi ha detto che non andava bene, ma perchè? Io l'ho sempre fatto e > Python non si è mai lamentato. Ho applicato il fix automatico e isort mi > ha riscritto le righe come segue: > > import pickle > import random > import time > from GBUtils import key > > Domanda, che è più che altro una curiosità: cosa c'è di male ad > importare i primi 3 moduli separandoli con una , in una singola > istruzione import? > niente di male è però considerato più consistente e leggibile importarli distintamente, vedi la PEP8 https://peps.python.org/pep-0008/#imports la stessa PEP8 dice comunque esplicitamente: "However, know when to be inconsistent – sometimes style guide recommendations just aren’t applicable. When in doubt, use your best judgment" https://peps.python.org/pep-0008/#a-foolish-consistency-is-the-hobgoblin-of-little-minds bye, Marco ___ Python mailing list Python@lists.python.it https://lists.python.it/mailman/listinfo/python
Re: [Python] Importare un dizionario in formato json
Grazie.Ho trovato nel frattempo queste istruzioni che funzionano bene :) https://www.geeksforgeeks.org/convert-json-to-dictionary-in-python/ Ciao Il mercoledì 5 ottobre 2022 13:58:42 CEST, Andrea D'Amore ha scritto: On Tue, 4 Oct 2022 at 14:43, Marco wrote: > import json > data = json.load(open("dati.json")) > > ma mi da' un messaggio di errore dicendo che il file non esiste. > Eppure nel Path Browser della Idle la cartella Documents, dove si trova il > file, e' impostata Non ho idea di cosa sia "Path Browser" secondo IDLE, dai import os print(os.getcwd()) e vedi dove devi mettere il file da importare, oppure usa un percorso assoluto. -- A. ___ Python mailing list Python@lists.python.it https://lists.python.it/mailman/listinfo/python
[Python] Importare un dizionario in formato json
Buongiorno, dovrei importare un dizionario in formato json. Ho trovato che esiste un modulo json e potrei importarlo cosi' import json data = json.load(open("dati.json"))ma mi da' un messaggio di errore dicendo che il file non esiste.Eppure nel Path Browser della Idle la cartella Documents, dove si trova il file, e' impostata Forse ho dimenticato qualcosa?GrazieMarco ___ Python mailing list Python@lists.python.it https://lists.python.it/mailman/listinfo/python
Re: [Python] Errore all'avvio di python.
Buongiorno Gabriele, sembra che il file pyreadline/py3k_compat.py della libreria pyreadline non sia aggiornato dal 2012. Callable fa ora parte del package collections.abc, non collections. Disinstalla pyreadline e dovresti essere in grado di lanciare l'interprete Python. https://github.com/pyreadline/pyreadline/blob/master/pyreadline/py3k_compat.py On 27.09.2022 13:10, Gabriele Battaglia wrote: Buongiorno. Se chiamo l'interprete ottengo questo errore: e:\Dropbox\py>python Python 3.10.4 (tags/v3.10.4:9d38120, Mar 23 2022, 23:13:41) [MSC v.1929 64 bit (AMD64)] on win32 Type "help", "copyright", "credits" or "license" for more information. Failed calling sys.__interactivehook__ Traceback (most recent call last): File "C:\Users\GBattaglia\AppData\Local\Programs\Python\Python310\lib\site.py", line 446, in register_readline import readline File "C:\Users\GBattaglia\AppData\Local\Programs\Python\Python310\lib\site-packages\readline.py", line 34, in rl = Readline() File "C:\Users\GBattaglia\AppData\Local\Programs\Python\Python310\lib\site-packages\pyreadline\rlmain.py", line 422, in __init__ BaseReadline.__init__(self) File "C:\Users\GBattaglia\AppData\Local\Programs\Python\Python310\lib\site-packages\pyreadline\rlmain.py", line 62, in __init__ mode.init_editing_mode(None) File "C:\Users\GBattaglia\AppData\Local\Programs\Python\Python310\lib\site-packages\pyreadline\modes\emacs.py", line 633, in init_editing_mode self._bind_key('space', self.self_insert) File "C:\Users\GBattaglia\AppData\Local\Programs\Python\Python310\lib\site-packages\pyreadline\modes\basemode.py", line 162, in _bind_key if not callable(func): File "C:\Users\GBattaglia\AppData\Local\Programs\Python\Python310\lib\site-packages\pyreadline\py3k_compat.py", line 8, in callable return isinstance(x, collections.Callable) AttributeError: module 'collections' has no attribute 'Callable' Da cosa può dipendere? ___ Python mailing list Python@lists.python.it https://lists.python.it/mailman/listinfo/python
Re: [Python] Parsing di un file ldif invalido
On 14.09.2022 14:55, Valerio Pachera wrote: Buongiorno a tutti, ho la seguente esigenza: parsare un file ldif prodotto dall'esportazione di una rubrica di Thunderbird. Prendiamo questo ldif come esempio: --- dn: cn=Mario Rossi,mail=mario.ro...@domain.com objectclass: top objectclass: person objectclass: organizationalPerson objectclass: inetOrgPerson objectclass: mozillaAbPersonAlpha givenName: Mario Rossi cn: Mario Rossi mail: mario.ro...@domain.com modifytimestamp: 1632815299 --- E il codice necessario per fare il parsing: --- #!/usr/bin/env python3 import sys from ldif3 import LDIFParser ldif_path = sys.argv[1] with open(ldif_path, 'rb') as ldif_file: parser = LDIFParser(ldif_file) for dn, entry in parser.parse(): print(dn, entry['cn']) --- #!/usr/bin/env python3 import sys from ldif3 import LDIFParser ldif_path = sys.argv[1] with open(ldif_path, 'rb') as ldif_file: parser = LDIFParser(ldif_file) for dn, entry in parser.parse(): try: print(dn, entry['cn']) except ValueError: continue ___ Python mailing list Python@lists.python.it https://lists.python.it/mailman/listinfo/python
Re: [Python] Vorrei essere cancellata dalla mailing list.
On Sat, 30 Jul 2022, 13:47 IloChab, wrote: > Vorrei essere cancellata dalla mailing list. > Ringrazio e saluto cordialmente > Licia Leanza > La cancellazione dalla lista è una operazione che ognuno può fare in autonomia seguendo questo link: https://lists.python.it/mailman/listinfo/python Ciao. Marco. > > ___ Python mailing list Python@lists.python.it https://lists.python.it/mailman/listinfo/python
Re: [Python] Spam dalla mailing-list
On 28.07.2022 10:32, ㎝ wrote: Il giorno gio 28 lug 2022 alle ore 10:06 Marco Giusti ha scritto: Salve a tutti, questa mattina ho risposto a due email e per due volte ho ricevuto questo messaggio. C'e' niente che si puo' fare? Allogo uno screenshot dell'email. Credo che le mie email avessero il mio indirizzo come reply-to. In questa email l'ho tolto. mi mandi (anche in privato) la mail del sender, che non vedo nello screenshot, così faccio una verifica? ㎝ Test, please ignore me. ___ Python mailing list Python@lists.python.it https://lists.python.it/mailman/listinfo/python
Re: [Python] Cancellazione alla mailing list.
On Thu, 28 Jul 2022 at 10:27, Benedetta Brunetti < benedetta.brune...@gmail.com> wrote: > Vorrei che la mia mail fosse eliminata dalla mailing list. > Benedetta, puoi fare da te in autonomia: https://lists.python.it/mailman/listinfo/python Ciao. Marco. ___ Python mailing list Python@lists.python.it https://lists.python.it/mailman/listinfo/python
Re: [Python] Spam dalla mailing-list
Il giorno gio 28 lug 2022 alle ore 10:12 Marco Beri ha scritto: > On Thu, 28 Jul 2022 at 10:06, Marco Giusti wrote: > >> Salve a tutti, >>questa mattina ho risposto a due email e per due volte ho ricevuto >> questo messaggio. C'e' niente che si puo' fare? >> Allogo uno screenshot dell'email. Credo che le mie email avessero il mio >> indirizzo come reply-to. In questa email l'ho tolto. >> > > Marco, > sai che io non le ho ricevute? Anche nel folder spam non le ho trovate. > > Qualcun altro le ha invece ricevute? > no, confermo che non le ho ricevute neanche io ciao, Marco ___ Python mailing list Python@lists.python.it https://lists.python.it/mailman/listinfo/python
Re: [Python] Spam dalla mailing-list
On 28.07.2022 10:11, Marco Beri wrote: On Thu, 28 Jul 2022 at 10:06, Marco Giusti wrote: Salve a tutti, questa mattina ho risposto a due email e per due volte ho ricevuto questo messaggio. C'e' niente che si puo' fare? Allogo uno screenshot dell'email. Credo che le mie email avessero il mio indirizzo come reply-to. In questa email l'ho tolto. Marco, sai che io non le ho ricevute? Anche nel folder spam non le ho trovate. Qualcun altro le ha invece ricevute? Adesso che ho rimosso il reply-to, non l'ho ricevuta neanche io. ___ Python mailing list Python@lists.python.it https://lists.python.it/mailman/listinfo/python
Re: [Python] Spam dalla mailing-list
On Thu, 28 Jul 2022 at 10:06, Marco Giusti wrote: > Salve a tutti, >questa mattina ho risposto a due email e per due volte ho ricevuto > questo messaggio. C'e' niente che si puo' fare? > Allogo uno screenshot dell'email. Credo che le mie email avessero il mio > indirizzo come reply-to. In questa email l'ho tolto. > Marco, sai che io non le ho ricevute? Anche nel folder spam non le ho trovate. Qualcun altro le ha invece ricevute? Ciao. Marco. ___ Python mailing list Python@lists.python.it https://lists.python.it/mailman/listinfo/python
[Python] Spam dalla mailing-list
Salve a tutti, questa mattina ho risposto a due email e per due volte ho ricevuto questo messaggio. C'e' niente che si puo' fare? Allogo uno screenshot dell'email. Credo che le mie email avessero il mio indirizzo come reply-to. In questa email l'ho tolto. Ciao, Marco ___ Python mailing list Python@lists.python.it https://lists.python.it/mailman/listinfo/python
Re: [Python] throw ad un generatore: perché non riparte dall'inizio?
cavolo, grazie mille a entrambi! questa lista rimane un gran bel posto ... a proposito, mi chiamo Marco pure io, mi ero dimenticato di firmarmi, Marco De Paoli Il giorno gio 28 lug 2022 alle ore 09:41 Marco Beri ha scritto: > Se invece di g.throw(Exception("BOOM")) scrivi print( > g.throw(Exception("BOOM"))) > > Ritroverai il tuo "A" :-) > ottimo! ed ha pure senso viva python :-) ___ Python mailing list Python@lists.python.it https://lists.python.it/mailman/listinfo/python
Re: [Python] throw ad un generatore: perché non riparte dall'inizio?
On Thu, 28 Jul 2022 at 09:48, Marco Giusti wrote: > Grazie Marco, > Prego omonimo. >Mi ero perso questo punto. I generator non vengono usati come > coroutine tutti i giorni. > Pensa che io non li ho proprio mai usati così: sono un uomo basico :-) Ciao. Marco. ___ Python mailing list Python@lists.python.it https://lists.python.it/mailman/listinfo/python
Re: [Python] throw ad un generatore: perché non riparte dall'inizio?
On 28.07.2022 09:40, Marco Beri wrote: On Thu, 28 Jul 2022 at 08:57, Marco De Paoli wrote: = ---><--- begin test_gen.py ---><---def gen(): while True: try: yield "A" yield "B" yield "C" except Exception as ex: print("catched exception", ex) g = gen() you_can_specify_any_number_of_steps = 3 for idx in range(you_can_specify_any_number_of_steps): print("result:", g.send(None)) print("throw...") g.throw(Exception("BOOM")) print("result:", g.send(None), "*** I was expecting A and I get B, why?!? ***") print("result:", g.send(None)) Se invece di g.throw(Exception("BOOM")) scrivi print(g.throw(Exception("BOOM"))) Ritroverai il tuo "A" :-) Grazie Marco, Mi ero perso questo punto. I generator non vengono usati come coroutine tutti i giorni. https://docs.python.org/3/reference/expressions.html#generator.throw Ciao Marco ___ Python mailing list Python@lists.python.it https://lists.python.it/mailman/listinfo/python
Re: [Python] throw ad un generatore: perché non riparte dall'inizio?
On Thu, 28 Jul 2022 at 08:57, Marco De Paoli wrote: > = > ---><--- begin test_gen.py ---><--- > def gen(): > while True: > try: > yield "A" > yield "B" > yield "C" > except Exception as ex: > print("catched exception", ex) > > > g = gen() > you_can_specify_any_number_of_steps = 3 > for idx in range(you_can_specify_any_number_of_steps): > print("result:", g.send(None)) > print("throw...") > g.throw(Exception("BOOM")) > print("result:", g.send(None), "*** I was expecting A and I get B, why?!? > ***") > print("result:", g.send(None)) > > Se invece di g.throw(Exception("BOOM")) scrivi print( g.throw(Exception("BOOM"))) Ritroverai il tuo "A" :-) Ciao. Marco. > > ___ Python mailing list Python@lists.python.it https://lists.python.it/mailman/listinfo/python
Re: [Python] throw ad un generatore: perché non riparte dall'inizio?
On 28.07.2022 08:56, Marco De Paoli wrote: ciao lista! ho una domanda sui generatori Mi farebbe molto comodo usare la possibilità di mandare una eccezione ad un generatore: ma mi trovo con un comportamento imprevisto Qui sotto trovate un frammento di codice che riproduce una sorta di "caso minimo" di quella che mi sembra una anomalia Se avete voglia di provarlo credo che il codice sia più o meno autoesplicativo. Quello che mi lascia perplesso è: perché il generatore, dopo aver gestito l'eccezione, non riparte dal restituire il valore "A"? Ciao Marco, ho aggiunto qualche print in piu' e come vedi dopo aver lanciato l'eccezione, due print sono eseguite prima di produrre il valore "A". Quello che sospetto sia il flusso di esecuzione e' il seguente. 1. un'eccezione e' lanciata all'interno del generatore, il flusso ritorna all'inizio del ciclo. La prima print e' eseguita cosi' come la prima yield; 2. fuori dal generatore il codice non consuma il valore generato usando una chiamata a "next", ma invece manda un altro valore (None) usando una send. Il generatore avanza, genera il valore "B" e questo e' il valore di ritorno della send e quello che viene stampato a schermo. Questa e' una presentazione [1] che lessi tempo addietro. La trovai illuminante all'epoca e trovo che sia sempre attuale. Questa e' la slide 31: * Despite some similarities, Generators and coroutines are basically two different concepts * Generators produce values * Coroutines tend to consume values * It is easy to get sidetracked because methods meant for coroutines are sometimes described as a way to tweak generators that are in the process of producing an iteration pattern (i.e., resetting its value). This is mostly bogus. La slide 32 e' similare al tuo esempio, e come vedi un valore e' perso esattamente come nel tuo caso. Spero di essere stato d'aiuto. Marco [1] http://www.dabeaz.com/coroutines/Coroutines.pdf # test_gen.py def gen(): while True: print("begin of the loop") try: print("before the first yield") yield "A" print("after the first yield") yield "B" yield "C" except Exception as ex: print("catched exception", ex) g = gen() you_can_specify_any_number_of_steps = 3 for idx in range(you_can_specify_any_number_of_steps): print("result:", g.send(None)) print("throw...") g.throw(Exception("BOOM")) print("result:", g.send(None), "*** I was expecting A and I get B, why?!? ***") print("result:", g.send(None)) # output $ python3.10 test_gen.py begin of the loop before the first yield result: A after the first yield result: B result: C throw... catched exception BOOM begin of the loop before the first yield after the first yield result: B *** I was expecting A and I get B, why?!? *** result: C ___ Python mailing list Python@lists.python.it https://lists.python.it/mailman/listinfo/python
[Python] throw ad un generatore: perché non riparte dall'inizio?
ciao lista! ho una domanda sui generatori Mi farebbe molto comodo usare la possibilità di mandare una eccezione ad un generatore: ma mi trovo con un comportamento imprevisto Qui sotto trovate un frammento di codice che riproduce una sorta di "caso minimo" di quella che mi sembra una anomalia Se avete voglia di provarlo credo che il codice sia più o meno autoesplicativo. Quello che mi lascia perplesso è: perché il generatore, dopo aver gestito l'eccezione, non riparte dal restituire il valore "A"? ---><--- begin test_gen.py ---><--- def gen(): while True: try: yield "A" yield "B" yield "C" except Exception as ex: print("catched exception", ex) g = gen() you_can_specify_any_number_of_steps = 3 for idx in range(you_can_specify_any_number_of_steps): print("result:", g.send(None)) print("throw...") g.throw(Exception("BOOM")) print("result:", g.send(None), "*** I was expecting A and I get B, why?!? ***") print("result:", g.send(None)) ---><--- end test_gen.py ---><--- ___ Python mailing list Python@lists.python.it https://lists.python.it/mailman/listinfo/python
Re: [Python] typing.NamedTuple - valori di default con definizione funzionale
On 09.03.2022 00:45, Pietro Convalle wrote: Si, probabilmente la cosa migliore e' ridefinire __new__ ma invece di aggiungerla dopo la creazione prova ad aggiungerla durante la creazione concatenando i valori default prima o dopo il for ho anche provato ad aggiungere questa modifica dopo la creazione di Links, ma non ha effetto. Links._field_defaults = { cardinal_point.value: None for cardinal_point in CARDINAL_POINTS_6_NS } suppongo che provare a ridefinire __new__ possa essere la soluzione... Incuriosito dalla tua domanda e curioso di scoprirne di più su Python3 ho investigato sull'implementazione di typing.NamedTyple. Non sono sicuro questo sia una buona soluzione per la ragione che accedo ad un attributo privato del modulo typing. In aggiunta, anche se non conosco il contesto e non è questo quello che hai chiesto, mi domando se avere una classe dinamica sia una buona soluzione. Come linea di principio ritengo le meta-classi qualcosa da evitare e spesso si hanno delle soluzioni più semplici. Questo è un utilizzo tradizionale di typing.NamedTyple: $ python3.10 Python 3.10.2 (main, Feb 15 2022, 12:33:54) [GCC 10.2.1 20210110] on linux Type "help", "copyright", "credits" or "license" for more information. >>> import typing >>> class Point(typing.NamedTuple): ... x: int ... y: int = 0 ... >>> Point.__annotations__ {'x': , 'y': } >>> Point.y _tuplegetter(1, 'Alias for field number 1') >>> Point.x _tuplegetter(0, 'Alias for field number 0') Il primo tentativo è stato quello di utilizzare type per create dinamicamente una classe. Questo non ha funzionato, ma conosco troppo poco le annotations e tutto quello che ne ha derivato per dare un qualche commento. >>> Point2 = type('Point2', (typing.NamedTuple, ), {'__annotations__': {'x': int, 'y': int}, 'y': 2}) Traceback (most recent call last): File "", line 1, in TypeError: type() doesn't support MRO entry resolution; use types.new_class() Come consigliato dal messaggio di errore ho provato ad utilizzare types.new_class, ma questa non permette di definire gli attributi della nuova classe, necessari per definire i valori di default. >>> import types >>> Point2 = types.new_class('Point2', (typing.NamedTuple, ), {'__annotations__': {'x': int, 'y': int}, 'y': 2}) Traceback (most recent call last): File "", line 1, in File "/home/marco/.pyenv/versions/3.10.2/lib/python3.10/types.py", line 77, in new_class return meta(name, resolved_bases, ns, **kwds) TypeError: NamedTupleMeta.__new__() got an unexpected keyword argument '__annotations__' Il terzo tentativo è stato quello di chiamare la meta-classe direttamente. Ottengo il risultato voluto, ma come vedi devo accedere ad un attributo privato. Non sono sicuro perché NamedTupleMeta verifica le classi basi, ma non neanche compito mio domandarmi perché. >>> Point2 = typing.NamedTupleMeta('Point2', (typing._NamedTuple, ), {'__annotations__': {'x': int, 'y': int}, 'y': 2, '__module__': '__main__'}) >>> Point2 >>> Point2() Traceback (most recent call last): File "", line 1, in TypeError: Point2.__new__() missing 1 required positional argument: 'x' >>> Point2(1) Point2(x=1, y=2) >>> ___ Python mailing list Python@lists.python.it https://lists.python.it/mailman/listinfo/python
Re: [Python] Stampare oggetti timedelta
On 17.02.2022 16:40, Gabriele Battaglia wrote: Ciao. Per stampare a video un oggetto ottenuto da un'operazione fra date, a parte la manipolazione manuale che posso fare con i suoi valori, esiste un metodo già pronto per personalizzarne la visualizzazione? Cioè print o str, danno già qualcosa di leggibile ma se volessi personalizzare la formattazione come si fa con strptime, è possibile? Non sembra che gli oggetti di tipo timedelta supportino il la sintassi per la formattazione di stringhe[1]. E' possibile comunque di create una classe ad-hoc per questo. Spero che quanto segue sia leggibile: $ python Python 3.10.2 (main, Feb 15 2022, 12:33:54) [GCC 10.2.1 20210110] on linux Type "help", "copyright", "credits" or "license" for more information. >>> import datetime >>> yesterday_now = datetime.datetime.now() - datetime.timedelta(days=1) >>> now = datetime.datetime.now() >>> now - yesterday_now datetime.timedelta(days=1, seconds=4, microseconds=951695) >>> (now - yesterday_now).total_seconds() 86404.951695 >>> delta = (now - yesterday_now) >>> format(delta, 'S') Traceback (most recent call last): File "", line 1, in TypeError: unsupported format string passed to datetime.timedelta.__format__ >>> class TimeDeltaFormat: ... def __init__(self, timedelta): ... self.delta = timedelta ... def __format__(self, format_spec): ... if format_spec == '': ...return str(self.delta) ... elif format_spec == 'd': ...return str(self.delta.days) ... elif format_spec == 's': ...return str(self.delta.seconds) ... elif format_spec == 'm': ...return str(self.delta.microseconds) ... elif format_spec == 'S': ...return str(self.delta.total_seconds()) ... else: ...raise TypeError("unsupported format string") ... >>> delta_f = TimeDeltaFormat(delta) >>> format(delta_f, 's') '4' >>> format(delta_f, 'S') '86404.951695' >>> print(f"{delta_f:s}.{delta_f:m}") 4.951695 >>> delta.microseconds 951695 >>> [1] https://docs.python.org/3/library/string.html#format-string-syntax ___ Python mailing list Python@lists.python.it https://lists.python.it/mailman/listinfo/python
Re: [Python] Append
On Thu, 13 Jan 2022 at 12:56, Yuri wrote: > Se trovi una libreria che supporta > FALLOC_FL_INSERT_RANGE > Tra l'altro credo ci sia solo per Linux questa primitiva. potresti farlo con le normali operazioni. Altrimenti è molto complicato, > conviene ripensare, se possibile, la strategia per i dati. Qual è la > tipologia di problema? > Concordo, ottima domanda. Ciao. Marco. ___ Python mailing list Python@lists.python.it https://lists.python.it/mailman/listinfo/python
Re: [Python] Append
On Thu, 13 Jan 2022 at 11:30, Leo Lo Tito wrote: > Se non devi lavorare forzatamente con append() potresti usare insert() per > aggiungere oggetti nella posizione desiderata. > Si parlava di file non di liste :-) Ciao. Marco. ___ Python mailing list Python@lists.python.it https://lists.python.it/mailman/listinfo/python
Re: [Python] Append
On Thu, 13 Jan 2022, 09:17 Gabriele Battaglia, wrote: > Ciao. > > Esiste un modo per aprire un file in modalità append ma... facendo sì > che il contenuto aggiunto vada all'inizio, e non appeso in fondo al file? > Purtroppo no. O meglio, non che io sappia. Ciao. Marco. ___ Python mailing list Python@lists.python.it https://lists.python.it/mailman/listinfo/python
[Python] sendall su socket no blocking
ciao a tutti, da alcune prove mi pare che il sendall spedisca effettivamente tutto il buffer anche su socket che abbiano setblocking(False) Però non sono sicuro che sia un comportamento sempre garantito su tutte le piattaforme La documentazione non si esprime in merito https://docs.python.org/3/library/socket.html#socket.socket.sendall Qui si dice che la sendall dovrebbe essere usata solo con socket blocking: https://stackoverflow.com/questions/6240737/python-socket-sendall-function (c'è un riferimento dangling a sorgenti evidentemente obsoleti) Ho visto i sorgenti del branch "main" e mi pare che invece la sendall spedisca sempre tutto... https://github.com/python/cpython/blob/main/Modules/socketmodule.c ad esempio qui https://github.com/python/cpython/blob/main/Modules/socketmodule.c#L925 Però diciamo che al sabato sera non mi sento abbastanza lucido da dirimere la questione da solo ;-) Marco ___ Python mailing list Python@lists.python.it https://lists.python.it/mailman/listinfo/python
Re: [Python] struct unpack di un intero
ciao Roberto, Il giorno gio 21 ott 2021 alle ore 11:15 Roberto De Ioris ha scritto: > Ciao, perche' di default viene rispettato l'allineamento che il dato > dovrebbe avere in memoria se fosse una struttura c: > > https://docs.python.org/3/library/struct.html#struct-alignment > > Roberto De Ioris > infatti se poi facevo l'unpack come intero a partire dal quel byte, funzionava mi sfuggiva questo particolare di rispettare il layout dell'intera struct C grazie mille! Marco ___ Python mailing list Python@lists.python.it https://lists.python.it/mailman/listinfo/python
[Python] struct unpack di un intero
ciao a tutti! ho un problema con struct.unpack e non capisco cosa sto sbagliando... >>> struct.unpack("i", b'\x03\x00\x00\x00') # OK! (3,) >>> struct.unpack("ih", b'\x03\x00\x00\x00\x04\x00') # OK! (3, 4) >>> struct.unpack("ihi", b'\x03\x00\x00\x00\x04\x00\x00\x00\x04\x00') # ARGHHH Traceback (most recent call last): File "", line 1, in struct.error: unpack requires a buffer of 12 bytes Perché mai se ne aspetta 12? Dovrebbero bastare i 10 che ci sono nel buffer! Mi aspettavo: >>> struct.unpack("ihi", b'\x03\x00\x00\x00\x04\x00\x00\x00\x04\x00') (3, 4, 4) Cosa sto sbagliando? Marco ___ Python mailing list Python@lists.python.it https://lists.python.it/mailman/listinfo/python
Re: [Python] Proteggere un programma
On Mon, 13 Sep 2021, 19:54 Marcello, wrote: > Salve a tutti, > Ho la necessità di proteggere un programma compilato con pyinstaller in > modo che venga utilizzato su un solo pc. > Volevo fare una sorta di codice di attivazione. > Esiste già qualche modulo che posso utilizzare? > Ho fatto una ricerca ma non ho trovato niente. > Eh, non esiste nulla perché è un falso problema. Se hai paura che il tuo cliente lo installi su più computer fai un contratto che lo impedisca e amen. Se invece hai paura che qualcun altro lo usi senza pagarlo, dovresti sperare il contrario: tutti i programmi di successo sono copiati :-) Ciao. Marco. ___ Python mailing list Python@lists.python.it https://lists.python.it/mailman/listinfo/python
[Python] Add-ons Blender
Cari Pythonisti, ho un contatto che ha bisogno di una consulenza (a pagamento, ça va sans dire) per la manutenzione e il refactoring di un add-on per Blender, già ampiamente installato e diffuso nella relativa community. C'è qualcuno di voi che ha competenze in tale campo e che sia seriamente interessato a questo genere di consulenza? In tal caso mi scriva in privato e lo metterò in contatto col contatto :-) Grazie per il vostro tempo. Ciao. Marco. ___ Python mailing list Python@lists.python.it https://lists.python.it/mailman/listinfo/python
Re: [Python] Lettura di funzioni Latex
Daniele, ma nel file testfunzioni.tex non ci sono valori che non trovi o sbaglio? Dovresti mettere anche un esempio negativo. Ciao. Marco. On Wed, 21 Jul 2021 at 12:53, Daniele Zambelli wrote: > Salve a tutti! > > Sto lavorando alla traduzione in html accessibile dei testi liberi > Matematica Dolce scritti in LaTeX. > > Ho bisogno di isolare tutte le chiamate funzioni grafiche in modo da > trasformare tutti i grafici dei testi in immagini png per poterli > visualizzare in pagine html. > > Devo estrarre dai file .tex tutte le chiamate di funzioni definite da me. > > Ho realizzato una prima soluzione funzionante: > 1. leggo, dal file dove sono definite, tutti i nomi delle funzioni. > 2. controllo se queste funzioni sono effettivamente chiamate nel file .tex. > > Un testo di prova (dove le funzioni non sono grafiche, ma questo non è > un problema) e le funzioni Python scritte si possono scaricare da: > > https://bitbucket.org/zambu/md2xhtml/downloads/texfunzioni.zip > > Purtroppo alcune funzioni hanno dei parametri. e quindi il metodo > banale "functioncalls1" non è utilizzabile. > > Penso che bisognerà scorrere tutto il file .tex. > > Forse potrebbero essere utili le espressioni regolari? > > C'è qualcuno che ha voglia di aiutarmi in questo lavoretto? > > Grazie per l'attenzione. > > -- > > Daniele > > www.fugamatematica.blogspot.com > > giusto! > nel verso > forse è perché non guardiamo le cose > Quando non ci capiamo, > ___ > Python mailing list > Python@lists.python.it > https://lists.python.it/mailman/listinfo/python > ___ Python mailing list Python@lists.python.it https://lists.python.it/mailman/listinfo/python
Re: [Python] with... as...
On Wed, 17 Mar 2021, 21:41 Vittorio Arturi, wrote: > "As" dovrebbe essere (se non sbaglio) un alias: converti il nome di una > variabile o una libreria in un nome piú piccolo, sintatticamente piú > memorizzabile e piú "usabile" nel tuo script. > Scrivo col beneficio del dubbio essendo un neofita assoluto. > Non solo per comodità. Ammettiamo che devi importare due moduli utils, uno dalla libreria ceppa e l'altro dalla libreria dimao. Come fai? from ceppa import utils as ceppa_utils from dimao import utils as dimao_utils Ciao. Marco. ___ Python mailing list Python@lists.python.it https://lists.python.it/mailman/listinfo/python
[Python] Offerta di lavoro: Python developer per sviluppo applicazione web
Ciao a tutti, scusate per il cross-posting, ma mi sembra che l'offerta possa essere d'interesse per entrambe le liste. Nell'azienda dove lavoro si cercano sviluppatori Python, possibilmente con esperienza in Django, per la realizzazione di un'applicazione web per una pubblica amministrazione. Sono richieste un'ottima conoscenza di Python e una buona esperienza con un web framework e con test automation. Gradita una precedente esperienza con CSS, JavaScript e nello sviluppo web per pubbliche amministrazioni. Il progetto ha visibilità iniziale di 5 mesi ma sono aperte posizioni a tempo indeterminato. Gli interessati posso chiedere maggiori informazioni o inviare la propria candidatura corredata di CV a i...@sferaspa.com indicando nell'oggetto DevPython. Vista la situazione, c'è la possibilità di lavorare da remoto. Saluti, Marco Santamaria -- |_|0|_| |_|_|0| |0|0|0| ___ Python mailing list Python@lists.python.it https://lists.python.it/mailman/listinfo/python
Re: [Python] list comprehension
On Fri, 4 Dec 2020 at 10:45, Walter Valenti wrote: > Ciao, > usa semplice domanda sulle list comprehension > Faccio l'esempio con questo semplice codice: > > lista = [0,1,2,3,4,5,6,7,8,9,10,12,14,16] > s = [n for n in lista if n%2 == 0][2] > print(s) > > In questo caso l'interprete (nel mio caso 3.8.6) è "intelligente" da > fermarsi all'elemento con indice due > nella comprehension o verifica comunque la condizione su tutta la lista ? > Testa la condizione su tutta la lista. Puoi verificarlo così: >>> lista = [0,1,2,3,4,5,6,7,8,9,10,12,14,16] >>> def pari(n): ... print(n) ... return n % 2 == 0 ... >>> s = [n for n in lista if pari(n)][2] 0 1 2 3 4 5 6 7 8 9 10 12 14 16 >>> print(s) 4 Ciao. Marco. ___ Python mailing list Python@lists.python.it https://lists.python.it/mailman/listinfo/python
Re: [Python] Mostrare decimali solo se diversi da 0.
On Thu, 3 Dec 2020, 20:45 Gabriele Battaglia, wrote: > Marco Ernesto, siete dei maestri. Gabriele, grazie ma non devi proprio. Per lo meno non con Ernesto (la faccina che ride riesci a leggerla col tuo lettore?). Posso chiederti Marco dove trovo una raccolta completa di tutto ciò che > funziona all’interno di una f-string? > Qui trovi la sintassi dei formattatori che puoi usare: https://docs.python.org/3.8/library/string.html#formatspec Ciao. Marco. ___ Python mailing list Python@lists.python.it https://lists.python.it/mailman/listinfo/python
Re: [Python] Mostrare decimali solo se diversi da 0.
On Thu, 3 Dec 2020 at 18:26, Ernesto Arbitrio wrote: > potresti usare qualcosa del tipo: > print("{0}".format(str(round(x, 1) if x % 1 else int(x))) > Oppure: >>> f"{6:g}" '6' >>> f"{6.0:g}" '6' >>> f"{6.5:g}" '6.5' Ciao. Marco. ___ Python mailing list Python@lists.python.it https://lists.python.it/mailman/listinfo/python
Re: [Python] Argomenti funzione posizionali e opzionali
Il giorno mer 2 dic 2020 alle ore 14:50 Daniele Zambelli < daniele.zambe...@gmail.com> ha scritto: > Quindi la soluzione che proporrei oggi sarebbe: > > def modify_signature_id(content, signature): > < fa qualcosa> > > def modify_signature_name(content, signature): > > > Tanto chi chiama la funzione sa se se ha a disposizione un id o un name. > Sono daccordo ... volendo poi si potrebbe anche valutare una cosa del genere: def modify_signature_id(content, signature): print("modify_signature_id", signature) def modify_signature_name(content, signature): print("modify_signature_name", signature) # utilizzo base modify_signature_id("cc", "sample_id") modify_signature_name("cc", "sample_name") # utilizzo parametrico modify_signature = lambda s_type: globals()["modify_signature_{}".format(s_type)] modify_signature("id")("cc", "sample_id") modify_signature("name")("cc", "sample_name") # utilizzo parametrico con f-strings modify_signature = lambda s_type: globals()[f"modify_signature_{s_type}"] modify_signature("id")("cc", "sample_id") modify_signature("name")("cc", "sample_name") bye, Marco ___ Python mailing list Python@lists.python.it https://lists.python.it/mailman/listinfo/python
Re: [Python] Strano errore.
On Wed, 11 Nov 2020 at 14:47, Gabriele Battaglia wrote: > Reply to the Marco Beri's message, wrote on 11/11/2020 at 14:43: > > Mancava una parentesi graffa chiusa alla riga 299 dopo la parentesi > > tonda prima di commenti. > > > OOh signur! > E posso chiederti come hai fatto a scoprirlo? > E perchè l'errore viene segnalato in riga 1? > Giusto per non ricaderci ancora. > Ti ringrazio tantissimo mi scuso e mi vergogno per la banalità della > cosa. > Ma figurati! Perché mai devi scusarti? :-) Ho semplicemente provato a eseguirlo col risultato che incollo dopo il mio nome. Spero tu riesca a leggerlo. Ciao. Marco. python3 ~/Downloads/IFM.py File "", line 1 (len(ifm[s][i]) commenti. Gestione lista) ^ SyntaxError: invalid syntax ___ Python mailing list Python@lists.python.it https://lists.python.it/mailman/listinfo/python
Re: [Python] Strano errore.
On Wed, 11 Nov 2020 at 14:37, Gabriele Battaglia wrote: > > Ma figurati, quale privata! > Vorrebbe essere una piccola utility per la gestione della squadra > giovanile del browser game www.hattrick.org > Una cosa semplicissima e ancora appena abbozzata. > La allego. > Mancava una parentesi graffa chiusa alla riga 299 dopo la parentesi tonda prima di commenti. Ciao. Marco. ___ Python mailing list Python@lists.python.it https://lists.python.it/mailman/listinfo/python
Re: [Python] Strano errore.
On Wed, 11 Nov 2020 at 14:16, Gabriele Battaglia wrote: > Marco, grazie per la risposta. > So che la mia prossima affermazione farà ribrezzo ma non so usare > pastebin. > Se ti mando in privato il semplice .py, che non ha dipendenze e non fa > nulla di pericoloso, giuro, :) andrebbe bene lo stesso? Gabriele, se non è roba riservata e non sono 10 mega puoi anche mandarla qui :-) Come preferisci. Ciao. Marco. ___ Python mailing list Python@lists.python.it https://lists.python.it/mailman/listinfo/python
Re: [Python] Strano errore.
On Wed, 11 Nov 2020, 13:57 Gabriele Battaglia, wrote: > Ciao, mi aiutate a capire perchè? > > VSCode mi segna questo errore: > > IFM.py >1 invalid syntax (, line 1) > pylint (syntax-error) [1, 18] Checkout branch/tag... > > Ma la riga 1 nel codice riporta: > > # -*- coding: UTF-8 -*- > > Se cancello la riga 1, l'errore rimane sempre in riga 1 carattere 18 che > è un commento: > > # IFM - I Fiua ad Magnavaca > > Cosa può significare? Gabriele, l'errore è quasi certamente in una riga più sotto, puoi postare tutto il file su pastebin? Ciao. Marco. ___ Python mailing list Python@lists.python.it https://lists.python.it/mailman/listinfo/python
Re: [Python] Coding per biennio superiori
On Wed, 4 Nov 2020, 08:49 Alessandro Dentella, wrote: > > Ciao, > > > scusate la mail parzialmente ot. > > Un figlio di amici, costretto a casa per una frattura, vuole avvicinarsi > in modo > autonomo al coding. Avete suggerimenti considerando che è in 1^ liceo? > > Scratch? Ciao. Marco. ___ Python mailing list Python@lists.python.it https://lists.python.it/mailman/listinfo/python
Re: [Python] uwsgi in docker: come interpretare questi log?
Il giorno mar 15 set 2020 alle ore 13:09 Alessandro Dentella < sandro.dente...@gmail.com> ha scritto: > PS: esiste ancora una lista uwsgi? io non la trovo, ma in documentazione > dicono > di scrivere in lista uwsgi... > uw...@lists.unbit.it non è più attiva Roberto De Ioris in proposito dice: "it has been deactivated months ago. You can open issues here or on stackoverflow. We are evaluating a google group btw." https://github.com/unbit/uwsgi/issues/2230 ___ Python mailing list Python@lists.python.it https://lists.python.it/mailman/listinfo/python
Re: [Python] Espressione reoglare
On Wed, 2 Sep 2020, 18:46 Gian Mario Tagliaretti, wrote: > On Wed, 2 Sep 2020 at 18:28, Marco Beri wrote: > > > Se non fosse che sarebbe uno shameless plug, potrei consigliarti un > ottimo libretto a 7€... > > in che senso scusa? > https://www.amazon.it/dp/8850326653/ref=cm_sw_em_r_mt_dp_nV8tFb541QSQ8 > > oops > Ma come più di 12€... Era 7!!! Si vede che sta diventando un pezzo raro. Correte, gente. Correte Ciao. Marco. ___ Python mailing list Python@lists.python.it https://lists.python.it/mailman/listinfo/python
Re: [Python] Espressione reoglare
On Wed, 2 Sep 2020, 18:06 Valerio Pachera, wrote: > > Il giorno mer 2 set 2020 alle ore 18:02 Marco Beri > ha scritto: > >> >> Mi piace il tuo senso di sorpresa >> > > Avendo poco tempo per studiare le RE e usandole poche volte, per me > tendono all'alchimia :-) > Se non fosse che sarebbe uno shameless plug, potrei consigliarti un ottimo libretto a 7€... Ciao. Marco. ___ Python mailing list Python@lists.python.it https://lists.python.it/mailman/listinfo/python
Re: [Python] Espressione reoglare
On Wed, 2 Sep 2020, 17:49 Valerio Pachera, wrote: > > > Il giorno sab 29 ago 2020 alle ore 00:03 Marco Beri > ha scritto: > >> ... >> Ops, mi correggo: >> >> \w+\b(?> >> Sembra funzionare alla grande! > Mo me la studio per bene. > Grazie. > Mi piace il tuo senso di sorpresa Ciao. Marco. ___ Python mailing list Python@lists.python.it https://lists.python.it/mailman/listinfo/python
Re: [Python] Espressione reoglare
On Fri, 28 Aug 2020 at 19:51, Marco Beri wrote: > \w+\b(? Ops, mi correggo: \w+\b(?___ Python mailing list Python@lists.python.it https://lists.python.it/mailman/listinfo/python
Re: [Python] Espressione reoglare
On Fri, 28 Aug 2020 at 15:58, Valerio Pachera wrote: > Ciao a tutti, consideriamo la seguente stringa: > 'uno due intruso due tre uno' > voglio matchare 'intruso'. > A dire il vero, voglio trovare qualsiasi cosa non sia 'uno', 'due', > 'tre', 'quattro'. > 'quattro' non è presente nella stringa ma potrebbe esserci. > Anche la presenza delle altre parole "buone" è opzionale. > > Come strategia ho pensato a questo pattern: > > '((?:uno)|(?:due)|(?:tre)|(?:quattro)|(?: ))' > > Così faccio il match di tutte le parole "buone". > Ora dovrei solo riuscire a negare il pattern e quindi matchare intruso. > > Sto testandolo la regex su https://regex101.com/ e mi sembra di essere > sulla buona strada ma non so come fare la negazione del pattern. > Speravo in un semplice ^ ma non è il carattere giusto. > \w+\b(?___ Python mailing list Python@lists.python.it https://lists.python.it/mailman/listinfo/python
Re: [Python] Eseguire file creapdf.py in Debian
On Sat, May 30, 2020 at 5:57 PM Daniele Zambelli wrote: > Morale: per eseguire un programma non solo deve avere i permessi di > esecuzione lui, ma anche la partizione in cui si trova. > Questa non la sapevo... Grazie a te :-) Ciao. Marco. ___ Python mailing list Python@lists.python.it https://lists.python.it/mailman/listinfo/python
Re: [Python] A weekend horror story
On Fri, May 29, 2020 at 11:35 AM Enrico Bianchi wrote: > Dato che è venerdì, e che ci si avvicina ad un fine settimana lungo (causa > probabile ponte per molti), mi chiedevo: qual è il codice più orribile che > avete scritto visto? Parto io con questo (in produzione): > > > > def stateDict(): > > stateNames = ['ABSENT','IDLE','STARTED','STOPPED'] > > return dict([(stateNames[i],i) for i in range(0,len(stateNames))]) > > > > def state_by_code(code): > > d = stateDict() > > return dict([(v,k) for k,v in d.items()])[code] > > > > def showState(STATES,state): > > ST = dict([(str(v),k) for k,v in STATES.items()]) > > return ST[str(state)] > La cosa più orrenda di tutte è che se un domani qualcuno aggiunge uno stato in mezzo agli altri, tutti i dati salvati in precedenza smettono di essere sensati. In questi casi io preferisco salvare uno slug descrittivo come code e mai un codice numerico. Ciao. Marco. ___ Python mailing list Python@lists.python.it https://lists.python.it/mailman/listinfo/python
Re: [Python] Creazione lista da Listbox
Il giorno lun 25 mag 2020 alle ore 19:20 Marcello ha scritto: > Salve a * > > Ho creato una Listbox con tkinter (e fino a qui non ho avuto problemi) > adesso quello che non riesco a fare è creare una lista per ogni riga che > inserisco nel text_comandi. > > esempio, se scrivo: > aaa > bbb > ccc > > dovrei ricavare una lista > ['aaa','bbb','ccc'] > forse ti fa comodo split >>> k = """ ... aaa ... bbb ... ccc""" >>> k.split() ['aaa', 'bbb', 'ccc'] ciao, Marco ___ Python mailing list Python@lists.python.it https://lists.python.it/mailman/listinfo/python
Re: [Python] un dubbio sulle liste
On Sat, 23 May 2020, 23:13 Giuliano Curti, wrote: > > 2) matrici (emulate con lista di liste), ad es. una matrice 2x3 >M = [[0]*3]*2 >M = [[0,0,0],[0,0,0]] >quando faccio M[0][1] = 5 mi trovo con M -> [[0, 5, 0], [0, 5, 0]] > cioè non solo >M[0][1] = 5, ma anche M[1][1] = 5; >lo stesso si ripete ovviamente con M[0][0] e con M[0][2]; >sembrerebbe cioè che gli elementi M[*][c] rimangano collegati; > Perché sono la stessa lista. Prova con: M = [[0]*3 for n in range (2)] Ciao. Marco. ___ Python mailing list Python@lists.python.it https://lists.python.it/mailman/listinfo/python
Re: [Python] Domanda su istruzione che coinvolge oggetti di Classe: country cos'è ?
Il giorno gio 21 mag 2020 alle ore 17:18 maria teresa panunzio < mariateresa.panun...@yahoo.it> ha scritto: > > > Il giovedì 21 maggio 2020, 17:07:38 CEST, Marco De Paoli < > depao...@gmail.com> ha scritto: > > > > > Il giorno gio 21 mag 2020 alle ore 16:51 maria teresa panunzio < > mariateresa.panun...@yahoo.it> ha scritto: > > Buonasera, > > Vorrei chiedere un aiuto sulla comprensione > della seguente istruzione > canada = country.Country('Canada', 34482779, 9984670) > > Si tratta di un esercizio sulle classi, dove Country è una delle classi > mentre Continent è l'altra. > L'istruzione che ho riportato ha lo scopo di assegnare i valori ai paesi > che, in questo caso, fanno parte del continente "North America" > > Non capisco cosa sia "country" o meglio cosa devo aggiungere al mio codice > nella definizione della classe "Continent" affinchè l'istruzione riportata > possa essere eseguita senza errori. > > > country probabilmente è un modulo importato precedentemente e che contiene > la definizione della classe Country > > Esempio file country.py (modulo contenente la definizione della classe): > class Country: > def __init__(self, name): > self.name = name > > def __str__(self): > return "Country: " + self.name > > Esempio file main.py (file principale): > > import country > > canada = country.Country("Canada") > > print(canada) > > Spero di essere stato chiaro, se no chiedi pure > Per semplicità, per iniziare, ammettiamo che i due file debbano essere > nella stessa directory (in realtà c'è una serie di path in cui il file > country.py può trovarsi) > > ciao, > Marco > > > > Grazie, Marco > (sto scrivendo la mia risposta in maniera corretta?) > ok! > non ci avevo pensato perchè io volevo mettere tutto in un unico file.Ora > che ho fatto diversamente, mi quadra! > ottimo! ciao, Marco ___ Python mailing list Python@lists.python.it https://lists.python.it/mailman/listinfo/python
Re: [Python] Domanda su istruzione che coinvolge oggetti di Classe: country cos'è ?
Il giorno gio 21 mag 2020 alle ore 16:51 maria teresa panunzio < mariateresa.panun...@yahoo.it> ha scritto: > Buonasera, > > Vorrei chiedere un aiuto sulla comprensione > della seguente istruzione > canada = country.Country('Canada', 34482779, 9984670) > > Si tratta di un esercizio sulle classi, dove Country è una delle classi > mentre Continent è l'altra. > L'istruzione che ho riportato ha lo scopo di assegnare i valori ai paesi > che, in questo caso, fanno parte del continente "North America" > > Non capisco cosa sia "country" o meglio cosa devo aggiungere al mio codice > nella definizione della classe "Continent" affinchè l'istruzione riportata > possa essere eseguita senza errori. > country probabilmente è un modulo importato precedentemente e che contiene la definizione della classe Country Esempio file country.py (modulo contenente la definizione della classe): class Country: def __init__(self, name): self.name = name def __str__(self): return "Country: " + self.name Esempio file main.py (file principale): import country canada = country.Country("Canada") print(canada) Spero di essere stato chiaro, se no chiedi pure Per semplicità, per iniziare, ammettiamo che i due file debbano essere nella stessa directory (in realtà c'è una serie di path in cui il file country.py può trovarsi) ciao, Marco ___ Python mailing list Python@lists.python.it https://lists.python.it/mailman/listinfo/python
Re: [Python] Docker, postgresql e barman: suggerimenti cercansi...
On Tue, May 19, 2020 at 7:36 PM Alessandro Dentella < sandro.dente...@gmail.com> wrote: > On Tue, May 19, 2020 at 05:20:00PM +0200, Davide Muzzarelli wrote: > > Questo articolo è di fine 2016 ma ancora perfettamente valido > > > https://thehftguy.com/2016/11/01/docker-in-production-an-history-of-failure/ > > dall'articolo estraggo: > > It takes 5 years to make a good and stable software, Docker v1.0 is only > 28 > months old, it didn’t have time to mature. > > The hardware renewal cycle is 3 years, the distribution release cycle is > 18-36 > months. Docker didn’t exist in the previous cycle so systems couldn’t > consider > compatibility with it. To make matters worse, it depends on many > advanced system > internals that are relatively new and didn’t have time to mature either, > nor > reach the distributions. > > That could be a decent software in 5 years. Wait and see. > > Beh... quasi ci siamo, quindi è il caso di leggere articoli più attuali per > farsi un'idea... > Per esempio questo, giusto di due settimane fa: https://www.2ndquadrant.com/en/blog/local-persistent-volumes-and-postgresql-usage-in-kubernetes/ Direi che possiamo passare oltre queste paure ;-) Ciao. Marco. ___ Python mailing list Python@lists.python.it https://lists.python.it/mailman/listinfo/python
Re: [Python] Creare loop infinito che si riavvia
On Tue, 19 May 2020, 15:43 Michele Gatti, wrote: > Ho creato un loop infinito classico while True, però ogni tanto viene > terminato (non riesco a capire) c'è la possibiltà che si riavvii da solo? > Michele, questa domanda non ha risposta e se ce l'ha è assolutamente no. Serve contesto. Ciao. Marco. ___ Python mailing list Python@lists.python.it https://lists.python.it/mailman/listinfo/python
Re: [Python] Da un modulo risalire a dove le funzioni sono chiamate. Si può?
On Mon, 18 May 2020, 21:25 NIcola Montecchiari, wrote: > Grazie, maSe un povero tapino stesse usando python su Windows? > http://gnuwin32.sourceforge.net/packages/grep.htm Ciao. Marco. ___ Python mailing list Python@lists.python.it https://lists.python.it/mailman/listinfo/python
Re: [Python] Da un modulo risalire a dove le funzioni sono chiamate. Si può?
On Mon, May 18, 2020 at 8:37 PM Pietro Brunetti wrote: > Ciao, > Di solito lo faccio con un paio di grep e altre cose da bash. Se ci giochi > un po' ci si riesce. > Idem. egrep -r "\bnome_della_funzione\(" Ciao. Marco. ___ Python mailing list Python@lists.python.it https://lists.python.it/mailman/listinfo/python
Re: [Python] OT: mercuria & heptapod
On Thu, May 14, 2020 at 11:02 AM Carlos Catucci wrote: > Lo stesso Torvald ha detto che se avesse conosciuto meglio GIT a suo tempo > non lo avrebbe wscelto per i repo di Linux. > Da https://en.wikipedia.org/wiki/Git: "Original author(s) Linus Torvalds". O Torvald è un tizio che non conosco o mi sa che hai riportato una fake news. Ciao. Marco. ___ Python mailing list Python@lists.python.it https://lists.python.it/mailman/listinfo/python
Re: [Python] Creazione servizio windows
On Fri, May 8, 2020 at 11:16 AM Michele Gatti wrote: > Ciao a tutti, > ho creato piccolo script in python per salvalmi nel gestionale > le mail dei preventivi. > Ho creato un eseguibile per farlo girare sul mio server windos, l'ho > aggiunto tra i servizi di windows attraverso nssm e funziona, logga tutto. > Ma ogni tanto si ferma completamente smette di loggare e non mi da nessun > tipo di errore, come se improvvisamente si spegnesse il servizio,quindi > tutte le volte che succede devo riavviare il servizio. > Qualcuno ha qualche suggerimento? > Ho creato in gist per vedere il codice: > https://gist.github.com/mikeleg/93aa8cdf7fc2eeb07e2a7c2731674431 > Prova a farci vedere l'ultimo log che stampa prima di piantarsi. Ciao. Marco. ___ Python mailing list Python@lists.python.it https://lists.python.it/mailman/listinfo/python
Re: [Python] (senza oggetto)
On Sun, May 3, 2020 at 3:40 PM Gollum1 wrote: > Il giorno gio 30 apr 2020 alle ore 15:35 Marco Beri > ha scritto: > > > >>> import re > > >>> testo = """lunghezza legno: 1000 cm > > ... peso del tronco: 34 kg > > ... tempo di lavorazione: 11 ore 57 minuti""" > > >>> re.findall(r"\s(\d+)\s*(\w+)(\s\d+\s\w+)?", testo) > > [('1000', 'cm', ''), ('34', 'kg', ''), ('11', 'ore', ' 57 minuti')] > > Grande Marco, > ormai ci metti le regexp ovunque... non per niente ci hai scritto un > bellissimo libro... :.P > > questo tuo modo, avrebbe il vantaggio che si trova nelle varie tuple i > valori e le grandezze... > però non sarebbe possibile fare le tuple con i campi necessari? per > esempio, eliminare il campo vuoto nelle prime due, e separare > uletriormente la terza in '57' , "minuti"? > No, evitare i gruppi vuoti che io sappia non si può (però puoi ignorarli facilmente da Python. Questa divide in due gruppi la terza: \s(\d+)\s*(\w+)(?:\s(\d+)\s(\w+))? import re testo = """lunghezza legno: 1000 cm peso del tronco: 34 kg tempo di lavorazione: 11 ore 57 minuti""" print(re.findall(r"\s(\d+)\s*(\w+)(?:\s(\d+)\s(\w+))?", testo)) [('1000', 'cm', '', ''), ('34', 'kg', '', ''), ('11', 'ore', '57', 'minuti')] Ciao. Marco. ___ Python mailing list Python@lists.python.it https://lists.python.it/mailman/listinfo/python
Re: [Python] Dove sbaglio?
On Fri, 1 May 2020, 10:23 Marco Beri, wrote: > On Fri, 1 May 2020, 02:58 Marco Beri, wrote: > > Ricordo che per calcolare se 17 fosse primo (lo è) girò tutta la >> notte. >> Era questa qui https://en.wikipedia.org/wiki/Casio_FX-602P_series ed era >> anche il 1981 (ero in quarta liceo). Mi era arrivato lo sghiribizzo di >> ricomprarmela (fino a pochi anni fa ce l'avevo, ma ora l'ho perduta). Ma >> mannaggia alla morte costa 200$: sghiribizzo passato all'istante :-) >> > > Piccolo ulteriore OT. > > Ho chiesto nel gruppo di famiglia e mia madre mi ha mandato la foto di > quello che ha trovato in un cassetto. > > Sono felice > Non sono più felice. Ho ingrandito la foto ed è una calcolatrice banalissima Casio. La tastiera uguale mi ha mandato in brodo di giuggiole a vuoto Sono proprio un boomer. Ciao. Marco. > ___ Python mailing list Python@lists.python.it https://lists.python.it/mailman/listinfo/python
Re: [Python] Dove sbaglio?
On Thu, Apr 30, 2020 at 9:45 PM Carpediem wrote: > Punto 5) ho cercato in rete info sulla funzione zip ma al momento non ho > trovato nulla di spiegato in modo semplice ma comunque approfondito: hai > riferimenti? > Questo tutorial spiega la funzione zip: https://realpython.com/python-zip-function/ Questo spiega la funzione sorted: https://www.programiz.com/python-programming/methods/built-in/sorted Questo spiega le lambda function: https://realpython.com/python-lambda/ Punto 6) Addirittura due soluzioni diverse: geniale ed invidiabile. Una > riga di codice contro le circa 30 da me utilizzate > In realtà le due soluzioni sono proprio simili. Un po' come dire che per sommare 10 puoi fare x + 10 oppure x - ( - 10). Non cambia la sostanza e le due soluzioni sono in realtà la stessa. Punto 8) Ma dove hai imparato? Avevo immaginato che mi ero infilato in > qualcosa di complicato e la tua conferma un poco mi consola > Il primo programma che ho scritto usava una calcolatrice programmabile per controllare se un numero fosse primo o meno. Ricordo che per calcolare se 17 fosse primo (lo è) girò tutta la notte. Era questa qui https://en.wikipedia.org/wiki/Casio_FX-602P_series ed era anche il 1981 (ero in quarta liceo). Mi era arrivato lo sghiribizzo di ricomprarmela (fino a pochi anni fa ce l'avevo, ma ora l'ho perduta). Ma mannaggia alla morte costa 200$: sghiribizzo passato all'istante :-) Quando fai una cosa (che per di più ti piace) per 40 anni diciamo che è proprio impossibile non diventare almeno decente in quello che fai. Attento: non sto dicendo che ci vogliono quarant'anni per diventare come me, anche perché sarebbe un risultato ben misero visto che ci sono ragazzini di 15 anni che mangiano in testa a noi boomer come niente fosse, dico solo che nel mio caso è stata più che altro una questione di tempo. La genialità sta proprio da un'altra parte (e lo dico con una grandissima dose di "invidia mista ammirazione" per i geni). Ciao. Marco. ___ Python mailing list Python@lists.python.it https://lists.python.it/mailman/listinfo/python
Re: [Python] Dove sbaglio?
On Thu, Apr 30, 2020 at 7:45 PM Carpediem wrote: > Il 30/04/2020 18:54, Marco Beri ha scritto: > > On Thu, Apr 30, 2020 at 6:18 PM Carpediem wrote: > >> Grazie Alessandro. Mi hai fatto notare l'assenza dell'istruzione break e >> ora che l'ho inserita, il programma termina la sua esecuzione. >> >> Purtroppo, non mi restituisce ciò che mi aspetto e continuo a non capire >> perchè. L'ordinamento che cerco, è in >> >> relazione con l'indice dei numeri della lista di riferimento e >> utilizzare il metodo sorted() per quel che ho visto, o compreso, non mi >> è di aiuto. >> >> Partendo da questo: >> >> [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, >> 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36] >> >> [22, 0, 18, 34, 20, 7, 2, 1, 30, 22, 55, 47, 53, 49, 52, 38, 12, 41, 29, >> 5, 11, 44, 26, 33, 40, 13, 50, 39, 4, 21, 45, 3, 53, 32, 6, 25, 55] >> >> volevo ottenere questo: >> >> [10, 36, 12, 32, .] >> >> [55, 55, 53, 53, 52, ..] >> > > Se guardi la documentazione di cosa fanno zip e sorted (che ha un > parametro reversed) vedrai che quello che vuoi fare è ottenibile con poche > istruzioni: > > >>> riepilogo_numeri_singoli = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, > 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, > ... 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, > 35, 36] > >>> > >>> ritardo_numeri_singoli = [22, 0, 18, 34, 20, 7, 2, 1, 30, 22, 55, 47, > 53, 49, 52, 38, 12, 41, 29, 5, 11, 44, 26, 33, 40, 13, 50, 39, 4, 21, > ... 45, 3, 53, 32, 6, 25, 55] > >>> > >>> ritardo_numeri_singoli_ordine_decrescente , numeri_singoli_in_ordine = > zip(*sorted(zip(ritardo_numeri_singoli, riepilogo_numeri_singoli), > reverse=True)) > >>> > >>> ritardo_numeri_singoli_ordine_decrescente > (55, 55, 53, 53, 52, 50, 49, 47, 45, 44, 41, 40, 39, 38, 34, 33, 32, 30, > 29, 26, 25, 22, 22, 21, 20, 18, 13, 12, 11, 7, 6, 5, 4, 3, 2, 1, 0) > >>> > >>> numeri_singoli_in_ordine > (36, 10, 32, 12, 14, 26, 13, 11, 30, 21, 17, 24, 27, 15, 3, 23, 33, 8, 18, > 22, 35, 9, 0, 29, 4, 2, 25, 16, 20, 5, 34, 19, 28, 31, 6, 7, 1) > >>> > > > Ciao. > Marco. > > > Grazie per il tuo tempo Marco. Scoprire che tutto il casino che ho scritto > si può riassumere in una sola istruzione quasi mi demoralizza. Tuttavia, il > risultato che ottengo con ciò che mi > > hai suggerito, non è ciò che voglio. il primo numero della lista > ritardo_numeri_singoli_in_ordine_decrescente è il numero 55 che nella lista > ritardo_numeri_singoli aveva indice 10 e in corrispondenza > > dell'indice 10 della lista riepilogo_numeri_singoli c'è il numero 10 che > dovrebbe essere il primo numero presente nella lista numeri_singoli_in > ordine. Il secondo 55 aveva indice 36 e quindi il numero > > corrispondente con tale indice nella lista riepilogo_numeri_singoli (il > 36) dovrebbe essere il secondo numero presente nella nuova lista e così > via. Quindi [10, 36, 12, 32 ] > > La tua soluzione mi rende invece un risultato diverso. Molto probabilmente > l'intenzione di ciò che voglio ottenere è stata da me espressa poco > chiaramente. > > L'istruzione sort con reverse = True l'avevo usata anche io per l'ordine > decrescente ma l'Istruzione zip è invece a me totalmente sconosciuta. > Cercherò di capirci qualcosa. > > E' comunque utilizzabile per ciò che mi serve? In caso affermativo vedere > l'istruzione che rende il risultato corretto mi faciliterebbe molto a > comprendere il suo funzionamento. > > Se ti fosse possibile, sono certo ne troverei giovamento. > La funzione zip fa questo: >>> list(zip([1,2,3], ['a', 'b', 'c'])) [(1, 'a'), (2, 'b'), (3, 'c')] Passandogli un parametro con l'* in pratica gli facciamo fare il contrario: >>> list(zip(*[(1, 'a'), (2, 'b'), (3, 'c')])) [(1, 2, 3), ('a', 'b', 'c')] Ma nel tuo caso lei fa il suo dovere, dobbiamo invece modificare il comportamento della funzione sorted: >>> ritardo_numeri_singoli_ordine_decrescente , numeri_singoli_in_ordine = zip(*sorted(zip(ritardo_numeri_singoli, riepilogo_numeri_singoli), key=lambda x:(x[0],-x[1]), reverse=True)) >>> ritardo_numeri_singoli_ordine_decrescente (55, 55, 53, 53, 52, 50, 49, 47, 45, 44, 41, 40, 39, 38, 34, 33, 32, 30, 29, 26, 25, 22, 22, 21, 20, 18, 13, 12, 11, 7, 6, 5, 4, 3, 2, 1, 0) >>> numeri_singoli_in_ordine (10, 36, 12, 32, 14, 26, 13, 11, 30, 21, 17, 24, 27, 15, 3, 23, 33, 8, 18, 22, 35, 0, 9, 29, 4, 2, 25, 16, 20, 5, 34, 19, 28, 31, 6, 7, 1) In pratica diciamo alla funzione sorted di usare per l'
Re: [Python] Dove sbaglio?
On Thu, Apr 30, 2020 at 6:18 PM Carpediem wrote: > Grazie Alessandro. Mi hai fatto notare l'assenza dell'istruzione break e > ora che l'ho inserita, il programma termina la sua esecuzione. > > Purtroppo, non mi restituisce ciò che mi aspetto e continuo a non capire > perchè. L'ordinamento che cerco, è in > > relazione con l'indice dei numeri della lista di riferimento e > utilizzare il metodo sorted() per quel che ho visto, o compreso, non mi > è di aiuto. > > Partendo da questo: > > [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, > 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36] > > [22, 0, 18, 34, 20, 7, 2, 1, 30, 22, 55, 47, 53, 49, 52, 38, 12, 41, 29, > 5, 11, 44, 26, 33, 40, 13, 50, 39, 4, 21, 45, 3, 53, 32, 6, 25, 55] > > volevo ottenere questo: > > [10, 36, 12, 32, .] > > [55, 55, 53, 53, 52, ..] > Se guardi la documentazione di cosa fanno zip e sorted (che ha un parametro reversed) vedrai che quello che vuoi fare è ottenibile con poche istruzioni: >>> riepilogo_numeri_singoli = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, ... 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36] >>> >>> ritardo_numeri_singoli = [22, 0, 18, 34, 20, 7, 2, 1, 30, 22, 55, 47, 53, 49, 52, 38, 12, 41, 29, 5, 11, 44, 26, 33, 40, 13, 50, 39, 4, 21, ... 45, 3, 53, 32, 6, 25, 55] >>> >>> ritardo_numeri_singoli_ordine_decrescente , numeri_singoli_in_ordine = zip(*sorted(zip(ritardo_numeri_singoli, riepilogo_numeri_singoli), reverse=True)) >>> >>> ritardo_numeri_singoli_ordine_decrescente (55, 55, 53, 53, 52, 50, 49, 47, 45, 44, 41, 40, 39, 38, 34, 33, 32, 30, 29, 26, 25, 22, 22, 21, 20, 18, 13, 12, 11, 7, 6, 5, 4, 3, 2, 1, 0) >>> >>> numeri_singoli_in_ordine (36, 10, 32, 12, 14, 26, 13, 11, 30, 21, 17, 24, 27, 15, 3, 23, 33, 8, 18, 22, 35, 9, 0, 29, 4, 2, 25, 16, 20, 5, 34, 19, 28, 31, 6, 7, 1) >>> Ciao. Marco. ___ Python mailing list Python@lists.python.it https://lists.python.it/mailman/listinfo/python
Re: [Python] Dove sbaglio?
On Thu, Apr 30, 2020 at 4:20 PM Carpediem wrote: > Evidentemente, anche io sono stato frettoloso nel giudicare. > Isidoro, io non ho dato alcun giudizio su di te (e come avrei potuto?) ma solo sull'apparente scopo del tuo programma mettendoti in guardia sull'inutilità provata (questa sì) di battere il banco con l'informatica. Ho anche aggiunto "(credo)" perché anche di quello non potevo essere certo. Non era mia intenzione offenderti o darti impressione di averti giudicato. Se così è stato, me ne scuso. Per il resto tu hai giudicato me e questa invece è stata una tua caduta di stile. Ciao. Marco. ___ Python mailing list Python@lists.python.it https://lists.python.it/mailman/listinfo/python
Re: [Python] (senza oggetto)
On Thu, Apr 30, 2020 at 3:21 PM Alessandro T. wrote: > Il 30/04/20 14:11, Marco Beri ha scritto: > > > La soluzione per te sono le regular expression: > > > > > > >>> testo = """lunghezza legno: 1000 cm > > ... peso del tronco: 34 kg > > ... tempo di lavorazione: 11 ore 57 minuti""" > > >>> testo > > 'lunghezza legno: 1000 cm\npeso del tronco: 34 kg\ntempo di > > lavorazione: 11 ore 57 minuti' > > >>> import re > > >>> re.findall(r"\s(\d+)\b\s*(\w+)", testo) > > [('1000', 'cm'), ('34', 'kg'), ('11', 'ore'), ('57', 'minuti')] > > > > > > > > Potrei consigliarti un buon testo sulle regex ma sarei in conflitto di > > interessi (e poi trovi comunque una marea di tutorial su web) :-D > > > > Ciao. > > Marco. > > > > Elegante come soluzione però incorretta perché il "tempo di lavorazione" > viene spezzato in "11 ore" e "57 min". Forse uno split() sulla singola > riga è più indicato. > Pronti! :-) >>> import re >>> testo = """lunghezza legno: 1000 cm ... peso del tronco: 34 kg ... tempo di lavorazione: 11 ore 57 minuti""" >>> re.findall(r"\s(\d+)\s*(\w+)(\s\d+\s\w+)?", testo) [('1000', 'cm', ''), ('34', 'kg', ''), ('11', 'ore', ' 57 minuti')] Ciao. Marco. ___ Python mailing list Python@lists.python.it https://lists.python.it/mailman/listinfo/python
Re: [Python] (senza oggetto)
On Thu, Apr 30, 2020 at 2:07 PM Paolo Miniussi wrote: > Buongiorno > molto piacere Paolo. Sono iscritto alla list di Python e ho visto che in > questi giorni state trattando l'argomento relativo al conteggio delle > parole. > Ho un problema specifico relativo all'estrazione di alcune stringhe che > seguono altre stringhe. > In pratica ho un testo tipo questo: > lunghezza legno: 1000 cm > peso del tronco: 34 kg > tempo di lavorazione: 11 ore 57 minuti > > Praticamente devo estrarre ciò che viene dopo le singole definizioni. > Quindi per la prima riga devo prelevare la stringa "1000 cm" , per la > seconda "34 kg" e via così (poi dovrò eventualmente capire se prendere solo > il valore numero oppure tutta la stringa). > Ho approcciato il problema usando lo slice e quindi tagliando le porzioni > di stringa desiderate per poi successivamente trasformarle in variabili. > Il problema è che il mio file di log che contiene queste informazioni da > estrarre può ovviamente variare di lunghezza e quindi lo slice va a farsi > benedire. > Per spiegarmi, il valore della "lunghezza legno:" invece di essere 1000 cm > può diventare 123000 cm quindi il taglio in slice mi troncherebbe il dato. > Stavo cercando di cambiare approccio e quindi di prelevare i dati > prendendo tutto quello che viene dopo una data stringa e prima di quella > successiva. > Avete qualche suggerimento? > La soluzione per te sono le regular expression: >>> testo = """lunghezza legno: 1000 cm ... peso del tronco: 34 kg ... tempo di lavorazione: 11 ore 57 minuti""" >>> testo 'lunghezza legno: 1000 cm\npeso del tronco: 34 kg\ntempo di lavorazione: 11 ore 57 minuti' >>> import re >>> re.findall(r"\s(\d+)\b\s*(\w+)", testo) [('1000', 'cm'), ('34', 'kg'), ('11', 'ore'), ('57', 'minuti')] Potrei consigliarti un buon testo sulle regex ma sarei in conflitto di interessi (e poi trovi comunque una marea di tutorial su web) :-D Ciao. Marco. ___ Python mailing list Python@lists.python.it https://lists.python.it/mailman/listinfo/python
Re: [Python] Contare parole
On Thu, 30 Apr 2020, 09:22 Pietro Brunetti, wrote: > testo = "Era una notte buia e tempestosa, molto tempestosa" > > parole = testo.split() > Meglio così: import re parole = list(re.findall(r"\b\w+\b", testo)) > <https://lists.python.it/mailman/listinfo/python> Non penso ci siano underscore o cifre nel testo. Ciao. Marco. ___ Python mailing list Python@lists.python.it https://lists.python.it/mailman/listinfo/python
Re: [Python] Dove sbaglio?
On Thu, Apr 30, 2020 at 1:16 AM Carpediem wrote: > Un saluto a tutti e un grazie anticipato al volenteroso che avrà avuto la > pazienza e la capacità di darmi una soluzione. > Stavo cercando di darti una mano ma poi ho realizzato lo scopo (credo) che c'è dietro al tuo script. Siccome da giovane sono già passato da questa illusione ti do questo suggerimento: https://www.frasicelebri.it/frase/ii-lotto-e-la-tassa-degli-imbecilli/ Lascia perdere, le palline non hanno memoria. Ciao. Marco. ___ Python mailing list Python@lists.python.it https://lists.python.it/mailman/listinfo/python
Re: [Python] iterazione incontrollata
On Sun, Apr 26, 2020 at 1:02 PM Carpediem wrote: > Buongiorno lista, approfittando di questo periodo, ho ripreso a cimentarmi > col caro python e mi sono imbattutto in una situazione che non riesco a > risolvere: > > ho due liste; nella prima (capitali) sono riportati i nomi delle > principali città del mondo (una trentina) e nella seconda lista, > (temperature) in corrispondenza di posizione di ogni capitale, la > temperatura massima della giornata. > [cut] > Suggerimenti? Soluzioni? > > Trasforma le due liste in un dizionario dove le chiavi sono le capitali e i valori le temperature. Poi stampa il dizionario ordinando per chiave: {k: v for k, v in sorted(x.items(), key=lambda item: item[1])} Ciao. Marco. ___ Python mailing list Python@lists.python.it https://lists.python.it/mailman/listinfo/python
Re: [Python] questio da neofita
On Wed, Apr 22, 2020 at 12:19 AM Lamb Don wrote: > Il problema è che seguendo le istruzioni fedelmente quanto lancio > l'esecuzione non tutte le volte il compito sisulta uguale come risultato > finale. > Il problema è che sbagli qualcosa. Posta degli esempi o non potremo aiutarti. Ciao. Marco. ___ Python mailing list Python@lists.python.it https://lists.python.it/mailman/listinfo/python
Re: [Python] (senza oggetto)
On Wed, Apr 22, 2020 at 12:12 AM Lamb Don wrote: > ciao > Mi sono iscritto da poco attendo vostre news. > Don > Guarda, qui è un casino! Non si esce di casa da un mese e passa. Però ogni tanto vado a fare la spesa. Per fortuna sono calvo, quindi non sento la mancanza del parrucchiere. That's it. Ciao. Marco. ___ Python mailing list Python@lists.python.it https://lists.python.it/mailman/listinfo/python
Re: [Python] #OT Compilazione C crossplatform.
Il giorno sab 18 apr 2020 alle ore 08:56 Gabriele Battaglia < iz4...@libero.it> ha scritto: > Buongiorno a tutti. > Mi scuso per l’OffTopic. > > Un amico ha creato un software molto utile a chi non vede e gioca a > scacchi. > Questo programma, scritto in C e privo di interfaccia grafica, che > comunica via console, si sta diffondendo ormai nelle comunità scacchistiche > di tutto il mondo. > Il problema è che taglia fuori tutti gli utenti non-Windows. > La mia domanda è, dato che viene usata solo la console, quindi non c’è > coinvolgimento di librerie grafiche, non sarebbe possibile chiedere al > compilatore di compilare i sorgenti anche per MacOS? > Mi rendo conto dell’ingenuità della domanda, ma non ho alcuna conoscenza > di come funzioni il C. > in linea di principio sì. Tuttavia in realtà Windows ha tante altre differenze rispetto alle piattaforme *nix/bsd/posix : gestione del filesystem, gestione delle stringhe ... perfino gestione del main (su Windows, di base c'è WinMain) Quindi la risposta è: dipende. Dipende come il programmatore ha strutturato i sorgenti Anche il sistema di build è potenzialmente diverso Ha usato make? CMake? un progetto/soluzione Visual Studio? .. nmake? Insomma, paradossalmente le librerie grafiche potrebbero non essere il problema maggiore: un progetto che usi wxWidgets o Qt potrebbe funzionare su piattaforme diverse senza grossi problemi In generale progetti che siano multi-compilatore e/o multi-piattaforma richiedono uno sforzo maggiore e non è detto che il programmatore faccia questa scelta Senza vedere i sorgenti completi del progetto è difficile sapere se sia multi-piattaforma ed, eventualmente, quanto sforzo possa richiedere il porting Si tratta di un progetto open-source? Comunque in ambito python (... e quindi automaticamente multipiattaforma! :-) ) ti segnalo questo https://github.com/thomasahle/sunfish ciao, Marco ___ Python mailing list Python@lists.python.it https://lists.python.it/mailman/listinfo/python
Re: [Python] Variabile non letta (RISOLTO)
Il giorno gio 16 apr 2020 alle ore 18:33 Mr.Dob ha scritto: > RISOLTO > > In primis un GRAZIE a Marco De Paoli, mi ha aiutato a ragionare e darmi il > giusto input > prego bene! mi fa piacere che hai combinato giusto qualche nota, se vuoi tenerne conto... > ecco il listato funzionante > > #!/usr/bin/env python > > import time > import serial > import os > import subprocess > > ser = serial.Serial( > > port='/dev/ttyUSB0', > baudrate = 9600, > parity=serial.PARITY_NONE, > stopbits=serial.STOPBITS_ONE, > bytesize=serial.EIGHTBITS, > timeout=1) > counter=0 > hmi=b'\xFF\xFF\xFF' > cpufreq=subprocess.check_output("cat > /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_max_freq", shell=True) > rimango dell'idea che puoi evitarti il subprocess.check_output (che lancia addirittura un altro processo per fare il cat) e leggere direttamente il file con una open e poi una read di python https://docs.python.org/3/library/functions.html#open cpu="" > cpu += cpufreq.decode() > cpu='''"'''+cpu+'''"''' > buffer=("t55.txt={}".format(cpu)).encode() > le 4 istruzioni precedenti puoi semplificarle se vuoi giocarci un po'... > ser.write(buffer) > ser.write(hmi) > comunque bene! complimenti! ciao, Marco ___ Python mailing list Python@lists.python.it https://lists.python.it/mailman/listinfo/python
Re: [Python] Variabile non letta
Il giorno gio 16 apr 2020 alle ore 17:23 Mr.Dob ha scritto: > Raspberry con linux installato. > Ho un display seriale, collegato con un convertitore usb/seriale collegato > tramite porta usb del raspberry. > Nel display ho realizzato un firmware tramite il tool Nextion editor ad > oggetti. > Ho inserito un oggetto text nominato t55.txt dove, via seriale gli passo > ser.write(b't55.txt="CIAO"') > Sul display mi visualizzerà la scritta CIAO. > Se voglio utilizzare una variabile al posto del CIAO questa non viene > passata. > Spero di essere stato esaustivo. > ok, hai fatto qualche prova con quello che ti ho scritto? M. ___ Python mailing list Python@lists.python.it https://lists.python.it/mailman/listinfo/python
Re: [Python] Variabile non letta
ciao, fammi capire... Il giorno gio 16 apr 2020 alle ore 16:41 Mr.Dob ha scritto: > Saluto a tutti, > > ho un Raspberry dove ho collegato via seriale un display Nextion. > > ho realizzato questo script in Python > > > > #!/usr/bin/env python > > import time > import serial > import os > import subprocess > > ser = serial.Serial( > > port='/dev/ttyUSB0', > baudrate = 9600, > parity=serial.PARITY_NONE, > stopbits=serial.STOPBITS_ONE, > bytesize=serial.EIGHTBITS, > timeout=1) > counter=0 > hmi=b'\xFF\xFF\xFF' > il tuo problema è questa riga qui? > #cpufreq=subprocess.check_output("cat > /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_max_freq", shell=True) > ossia non riesci a leggere la frequenza della CPU? > cpufreq="CIAO" > oppure questa parte? > #buffer=(b't55.txt= + str(cpufreq).encode()') > buffer=(b't55.txt=cpufreq') > che però ad occhio non mi pare vada bene visto che nel buffer non viene messo il *valore* della variabile, bensì il suo nome ser.write(buffer) > ser.write(hmi) > > * > > Il problema che la variabile "cpufreq" non viene letta. > > buffer=(b't55.txt=cpufreq') t55.txt è un oggetto che risiede nel display > Nextion a cui devo passare il valore della variabile "cpufreq" > > Altresì se passo buffer=(b't55.txt="CIAO"') funziona > > Ho letto tante di quelle info senza trovare la soluzione. > ad occhio mi pare che tu abbia due problemi: a. la lettura della frequenza della cpu b. la scrittura nel buffer della seriale Ti do due spunti: a. fai in modo di leggere il file /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_max_freq con il comando open di python (non con "cat") b. crea il buffer a partire dal valore della variabile, esempio: >>> cpufreq = 10 >>> ("t55.txt={}".format(cpufreq)).encode() b't55.txt=10' bye, Marco ___ Python mailing list Python@lists.python.it https://lists.python.it/mailman/listinfo/python
Re: [Python] Fare esami su Python
Il giorno ven 10 apr 2020 alle ore 11:31 Gianfranco Durin ha scritto: > Buongiorno a tutti, > ho bisogno di una consulenza... > > Sto facendo un corso, anzi due (Triennale e Magistrale) alla facoltà di > Economia a Torino e nel caos dei corsi online ora c'è il problema di fare > gli esami a distanza. Il corso è interamente impostato su i notebook di > jupyter e così vorrei rimanere anche per l'esame. > Per gli studenti della triennale posso sicuramente fare una sorta di test > a crocette (anche se l'idea non mi fa impazzire) ma per quelli della > magistrale l'idea è di analizzare database con pandas e fare > analisi statistiche, plot e quant'altro e poi di valutare una serie > temporale, fare medie mobili, volatilità etc. > C'è qualcuno di voi che a qualche esperienza di esami a distanza di questo > tipo? O c'è una piattaforma che potrei utilizzare? > Il corso è interamente salvato su moodle e c'è anche la possibilità di > costruire gli esami con quiz, ma aiuto mi sembra una cosa da pazzi. > > Grazie per l'aiuto! > non so se può esserti di aiuto nel tuo caso... ma puoi valutare anche "Google Collaboratory" https://colab.research.google.com/notebooks/intro.ipynb nessun bisogno che lo studente installi alcunchè sul suo PC Si tratta di una sorta di notebook (jupyter) online, che salva i file ipynb su Drive al momento può essere usato gratuitamente per chiunque abbia un account google Gli stundeti possono impratichirsi liberamente Poi, buttò là... al momento dell'esame: 1. ricevono le consegne ad una certa ora (eventualmente leggermente personalizzate per ognuno... tanto perché non copino...) 2. hanno un certo tempo per mettere a punto il loro "notebook" 3. alla fine devono fare share con l'insegnate La cosa buona è che anche per la correzione non ti troveresti neanche tu a dover installare alcunchè sul tuo PC (fosse mai che qualche versione di pacchetto è diversa...), ma puoi far girare semplicemente il loro notebook direttamente dentro Collaboratory Attenzione, io non l'ho mai provato con Pandas, l'ho usato solo con Tensorflow (su cui, tra l'altro, è figo perché ti da anche a disposizione la possibilità di farlo girare su GPU (Runtime > Change runtime type) Se hai voglia facci sapere come va a finire e su cosa ti orienti alla fine... mi sembra interessante questa prospettiva degli esami online di python :-) bye, M ___ Python mailing list Python@lists.python.it https://lists.python.it/mailman/listinfo/python
Re: [Python] argparse e stringhe
Il giorno mer 8 apr 2020 alle ore 08:28 Marco De Paoli ha scritto: > > > Il giorno mer 8 apr 2020 alle ore 08:16 Matteo Perini < > perini.mat...@gmail.com> ha scritto: > >> Ciao a tutti, >> >> ho un problemino con il comportamento di argparse. >> >> Sto facendo delle prove con questo script di test: >> >> if __name__ == "__main__": >> parser = argparse.ArgumentParser() >> parser.add_argument("-t", "--text", default = 'ci\nao', type=str) >> args = parser.parse_args() >> text = args.text >> for line in text.split('\n'): >> print(line) >> >> Se eseguo lo script senza argomenti il risultato è quello atteso: >> >> ci >> >> ao >> >> Il "\n" viene interpretato correttamente. >> >> Se però eseguo lo script mettendo come argomento -t "ci\nao" il >> risultato è: >> >> ci\nao > > >> problema che riesco a risolvere convertendo text così: >> >> text = bytes(args.text, "utf-8").decode("unicode_escape") >> >> a questo punto ottengo di nuovo l'andata a capo. >> >> >> Ultimo caso, se l'utente non mette le virgolette e scrive -t ci\nao il >> risultato di args.text è: >> >> cinao >> >> mi toglie solo la "\" e a questo punto io non so più come trattarlo. >> >> Che voi sappiate c'è un modo per controllare se un argomento ha le >> virgolette o no. >> >> Oppure trattare l'input sempre come raw? >> >> Penso sia un problema che potrebbe essere piuttosto comune ma non ho >> trovato soluzioni online. >> >> Ciao >> > > se vuoi i parametri raw > > import sys > print(sys.argv) > se invece vuoi qualche altra info su newline ed escape puoi dare un'occhiata qui https://stackoverflow.com/questions/16904064/end-of-line-new-line-escapes-in-bash M. > ___ Python mailing list Python@lists.python.it https://lists.python.it/mailman/listinfo/python