RISOLTO [Python] Comportamento che non comprendo di configparser per file.ini

Pubblicità

Knive`s

Nuovo Utente
Messaggi
2
Reazioni
0
Punteggio
24
Ciao a tutti.
Potrebbe essere una banalità oppure io che sbaglio qualcosa e comunque non riesco ad andarne a capo.
Succede che ho una serie di file.ini che gestisco con Python, una cosa semplice in realtà, ma ho notato una cosa che non riesco a comprendere.
Alla fine riesco comunque a gestire i files, però non riesco a dare un senso logico alla cosa. Per esempio:
Abbiamo tre files.ini semplici semplici:
Codice:
# Nome del file: primo_ini.ini
[Nome]
first = John

[Cognome]
second = Doe

[Age]
eta = 28

# Nome del secondo file: secondo_ini.ini
[Nome]
nom = Jane

[Cognome]
prenom = Doe

[Age]
age = 25

# Terzo file: terzo_ini.ini
[Nome]
nombre = Johnny

[Cognome]
apellido = Doe

[Age]
edad = 4

I files sono tutti e tre dentro la directory /Dati. Ora apro un terminale.
Python:
# Importo il modulo;
from configparser import ConfigParser
# Creo il parser
config = ConfigParser()
# Creo una var col solo nome del file;
file = "primo_ini.ini"
# Creo una var per il path del file;
pathini = f'/Dati/{file}'
# Verifico l'esatezza;
>>> pathini
# output
'/Dati/primo_ini.ini'
# Leggo il file;
>>> config.read(pathini)
# output
['/Dati/primo_ini.ini']
# Ora voglio sapere quali opzioni sono presenti nella sezione [Nome]
# con parser.options("section"), il quale mi darà una lista;
>>> config.options("Nome")
# Output, solo una.
['first']

# Ora, rifaccio il tutto cambiando il solo nome file, da primo_ini.ini a secondo_ini.ini eccecc
# Per velocizzare riporto i comandi dal terminale:
>>> file = "secondo_ini.ini"
>>> pathini = f'/Dati/{file}'
>>> pathini
'/Dati/secondo_ini.ini'
>>> config.read(pathini)
['/Dati/secondo_ini.ini']
>>> config.options("Nome")
# L' output riporta l'option sia del primo che del secondo file.ini
['first', 'nom']

# Provo col terzo:
>>> file = "terzo_ini.ini"
>>> pathini = f'/Dati/{file}'
>>> pathini
'/Dati/terzo_ini.ini'
>>> config.read(pathini)
['/Dati/terzo_ini.ini']
>>> config.options("Nome")
# Questa volta mi riporta le opzioni di tutti tre i file.ini, perché?
['first', 'nom', 'nombre']
Se il path del file è corretto e lo è anche l' output di 'config.read(pathini)' il quale riporta il file.ini che ha letto, perché c'è questo 'append' nel output di config.options("Nome"), dove sbaglio? 😁
Grazie a chiunque risponderà. ☺️
 
Se ho capito bene, vorresti che anche per il secondo e terzo file ci sia solo una label?
Se si, devi svuotare il contenuto letto precedentemente.
Prova a rifare config = ConfigParser()
 
Python:
>>> config = ConfigParser()
>>> config
<configparser.ConfigParser object at 0x7fa896a711e0>
#
>>> config = ConfigParser()
>>> config
<configparser.ConfigParser object at 0x7fa896a72b60>
Hai ragione! Sono due oggetti distinti e dal momento che la funzione ''read'' (parser.read('file.ini') "appende", appende all'oggetto sopra. Almeno così mi sembra di capire. 😋
Non ci sarei mai arrivato da solo, grazie.
 
Pubblicità
Pubblicità
Indietro
Top