Re: [Python] Aggiungere testo all'inizio di un file.

2024-05-18 Per discussione Marco Beri
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

2024-03-28 Per discussione Marco Monti
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

2024-02-12 Per discussione Marco Beri
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

2024-02-12 Per discussione Marco Beri
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

2024-02-12 Per discussione Marco Beri
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

2024-02-12 Per discussione Marco Monti
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

2024-02-12 Per discussione Marco Beri
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

2023-11-30 Per discussione Marco Beri
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

2023-07-19 Per discussione Marco Giusti

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

2023-02-06 Per discussione Marco Giusti

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

2023-02-05 Per discussione Marco Beri
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

2023-02-01 Per discussione Marco Giusti

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

2023-01-21 Per discussione Marco Beri
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

2023-01-10 Per discussione Marco Giusti

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

2023-01-10 Per discussione Marco Giusti

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

2022-12-11 Per discussione Marco De Paoli
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

2022-12-09 Per discussione Marco De Paoli
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

2022-12-07 Per discussione Marco De Paoli
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

2022-11-19 Per discussione Marco Giusti

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.

2022-11-15 Per discussione Marco Beri
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

2022-10-20 Per discussione Marco De Paoli
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

2022-10-18 Per discussione Marco De Paoli
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

2022-10-18 Per discussione Marco De Paoli
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.

2022-10-13 Per discussione Marco De Paoli
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

2022-10-05 Per discussione Marco
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

2022-10-04 Per discussione Marco
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.

2022-09-27 Per discussione Marco Giusti

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

2022-09-14 Per discussione Marco Giusti

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.

2022-07-30 Per discussione Marco Beri
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

2022-07-28 Per discussione Marco Giusti

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.

2022-07-28 Per discussione Marco Beri
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

2022-07-28 Per discussione Marco De Paoli
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

2022-07-28 Per discussione Marco Giusti

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

2022-07-28 Per discussione Marco Beri
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

2022-07-28 Per discussione Marco Giusti

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?

2022-07-28 Per discussione Marco De Paoli
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?

2022-07-28 Per discussione Marco Beri
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?

2022-07-28 Per discussione Marco Giusti

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?

2022-07-28 Per discussione Marco Beri
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?

2022-07-28 Per discussione Marco Giusti

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?

2022-07-28 Per discussione Marco De Paoli
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

2022-03-09 Per discussione Marco Giusti

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

2022-02-18 Per discussione Marco Giusti

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

2022-01-13 Per discussione Marco Beri
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

2022-01-13 Per discussione Marco Beri
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

2022-01-13 Per discussione Marco Beri
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

2021-10-23 Per discussione Marco De Paoli
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

2021-10-21 Per discussione Marco De Paoli
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

2021-10-21 Per discussione Marco De Paoli
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

2021-09-13 Per discussione Marco Beri
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

2021-08-04 Per discussione Marco Beri
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

2021-07-21 Per discussione Marco Beri
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...

2021-03-17 Per discussione Marco Beri
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

2021-01-27 Per discussione Marco Santamaria
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

2020-12-04 Per discussione Marco Beri
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.

2020-12-03 Per discussione Marco Beri
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.

2020-12-03 Per discussione Marco Beri
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

2020-12-02 Per discussione Marco De Paoli
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.

2020-11-11 Per discussione Marco Beri
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.

2020-11-11 Per discussione Marco Beri
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.

2020-11-11 Per discussione Marco Beri
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.

2020-11-11 Per discussione Marco Beri
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

2020-11-05 Per discussione Marco Beri
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?

2020-09-15 Per discussione Marco De Paoli
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

2020-09-02 Per discussione Marco Beri
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

2020-09-02 Per discussione Marco Beri
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

2020-09-02 Per discussione Marco Beri
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

2020-08-28 Per discussione Marco Beri
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

2020-08-28 Per discussione Marco Beri
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

2020-05-30 Per discussione Marco Beri
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

2020-05-29 Per discussione Marco Beri
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

2020-05-26 Per discussione Marco De Paoli
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

2020-05-23 Per discussione Marco Beri
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'è ?

2020-05-21 Per discussione Marco De Paoli
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'è ?

2020-05-21 Per discussione Marco De Paoli
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...

2020-05-20 Per discussione Marco Beri
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

2020-05-19 Per discussione Marco Beri
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ò?

2020-05-18 Per discussione Marco Beri
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ò?

2020-05-18 Per discussione Marco Beri
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

2020-05-14 Per discussione Marco Beri
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

2020-05-08 Per discussione Marco Beri
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)

2020-05-03 Per discussione Marco Beri
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?

2020-05-01 Per discussione Marco Beri
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?

2020-04-30 Per discussione Marco Beri
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?

2020-04-30 Per discussione Marco Beri
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?

2020-04-30 Per discussione Marco Beri
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?

2020-04-30 Per discussione Marco Beri
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)

2020-04-30 Per discussione Marco Beri
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)

2020-04-30 Per discussione Marco Beri
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

2020-04-30 Per discussione Marco Beri
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?

2020-04-29 Per discussione Marco Beri
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

2020-04-26 Per discussione Marco Beri
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

2020-04-21 Per discussione Marco Beri
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)

2020-04-21 Per discussione Marco Beri
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.

2020-04-18 Per discussione Marco De Paoli
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)

2020-04-16 Per discussione Marco De Paoli
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

2020-04-16 Per discussione Marco De Paoli
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

2020-04-16 Per discussione Marco De Paoli
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

2020-04-10 Per discussione Marco De Paoli
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

2020-04-08 Per discussione Marco De Paoli
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


  1   2   3   4   5   6   7   8   9   10   >