On 3/10/21 9:03 AM, Gabriele Battaglia wrote:
Buondì.
Sono nuovissimo nell'uso dei generatori, non li ho mai studiati ne usati prima.
Ora devo colmare questa laguna d'ignoranza, la "g" non è un refuso! :)
Vi chiedo 2 sciocchezze, per favore rispondete col metodo AIAF: As I am Five... si scriverà così? :)

Dunque, ho questo generatore qui:

import os
filesys = os.walk(os.getcwd())

So che posso fare una cosa del tipo:

for root, folders, files in filesys:
   print(f"Root is {root}")
   ...eccetera eccetera.

Ma se volessi sapere solo la root e basta, come la tirerei fuori dal generatore? O, in altre parole, esiste solo il ciclo for, che mi permette diciamo di guardarci dentro?

Grazie.
Gabry.

Ciao,

un generatore è a tutti gli effetti un oggetto iteratore pronto all'uso, non serve necessariamente il for per gestire la sequenza di valori generata, ma basta applicare la funzione next().

Nel tuo esempio potrebbe essere:

  try:
     root, folders, files = next(filesys)
  except StopIteration:
     pass  # o interrompi i ciclo se se in un while ...
  else:
     ... # usi i 3 valori ottenuti


oppure puoi applicare un default appropriato quando chiami next():

  root, folders, files = next(filesys, ('', [], []))
  if root != '':
      ... # usi i 3 valori ottenuti

_______________________________________________
Python mailing list
Python@lists.python.it
https://lists.python.it/mailman/listinfo/python

Rispondere a