Puoi farlo in una singola riga di codice.
In python 3, anteponi un'intestazione di sezione falsa ai dati del tuo file di configurazione e passala a read_string()
.
from configparser import ConfigParser
parser = ConfigParser()
with open("foo.conf") as stream:
parser.read_string("[top]\n" + stream.read())
Puoi anche usare itertools.chain()
per simulare un'intestazione di sezione per read_file()
. Ciò potrebbe essere più efficiente in termini di memoria rispetto all'approccio precedente, il che potrebbe essere utile se si hanno file di configurazione di grandi dimensioni in un ambiente di runtime limitato.
from configparser import ConfigParser
from itertools import chain
parser = ConfigParser()
with open("foo.conf") as lines:
lines = chain(("[top]",), lines)
parser.read_file(lines)
In python 2, anteponi un'intestazione di sezione falsa ai dati del tuo file di configurazione, racchiudi il risultato in un StringIO
oggetto e passalo a readfp()
.
from ConfigParser import ConfigParser
from StringIO import StringIO
parser = ConfigParser()
with open("foo.conf") as stream:
stream = StringIO("[top]\n" + stream.read())
parser.readfp(stream)
Con uno qualsiasi di questi approcci, le tue impostazioni di configurazione saranno disponibili in parser.items('top')
.
Potresti usare StringIO anche in python 3, forse per compatibilità con interpreti python sia vecchi che nuovi, ma nota che ora vive nel io
pacchetto ed readfp()
è ora deprecato.
In alternativa, potresti prendere in considerazione l'utilizzo di un parser TOML invece di ConfigParser.