[Python] python e yaml

Francesco Guerrieri f.guerrieri a gmail.com
Sab 17 Nov 2007 17:52:49 CET


On Nov 17, 2007 5:35 PM, Mr. SpOOn <mr.spoon21 a gmail.com> wrote:
> On Nov 17, 2007 5:24 PM, Francesco Guerrieri <f.guerrieri a gmail.com> wrote:
> > Cosa succede se fai type(yaml.load(data)) ?
>
> >>> d = yaml.load(stream)
> >>> type(d)
> <type 'NoneType'>
> >>> type(yaml.load(stream))
> <type 'NoneType'>
>
> Però, provando come hai fatto tu:
>
> >>> data = """
>    a: 1
>    b: 2
>    """
> >>> yaml.load(data)
> {'a': 1, 'b': 2}
> >>> d = yaml.load(data)
> >>> type(d)
> <type 'dict'>
> >>> d['a']
> 1
>
>
> Solo che io avrei bisogno di utilizzare i file :\

La soluzione è semplice: se gli passi un file lui parte dalla prima
riga e arriva fino all'ultima.
E quindi, la prima volta funziona:
my_file = open('prova)
yaml.load(my_file)

e funziona come nel tuo esempio
Ma ora my_file è stato letto tutto e tu sei alla EOF. Allora basta
fare my_file.seek(0) e riprovare :-)
my_file.seek(0)
d = yaml.load(my_file)

et voilà :-)
usando una stringa tipo data = """
a: 1
b: 2
"""

non ci sono problemi di EOF, di iteratori che hanno consumato il file
etc etc perché gli stai sempre passando tutto il documento YAML.
Naturalmente questo comportamento è tipico della lettura dei file, non
è specifico per yaml.


ciao
fra


Maggiori informazioni sulla lista Python