Możesz to zrobić w jednej linii kodu.
W Pythonie 3 dołącz fałszywy nagłówek sekcji do danych pliku konfiguracyjnego i przekaż go do read_string()
.
from configparser import ConfigParser
parser = ConfigParser()
with open("foo.conf") as stream:
parser.read_string("[top]\n" + stream.read())
Możesz również użyć itertools.chain()
do symulacji nagłówka sekcji dla read_file()
. Może to być bardziej wydajne pod względem wykorzystania pamięci niż powyższe podejście, co może być przydatne, jeśli masz duże pliki konfiguracyjne w ograniczonym środowisku wykonawczym.
from configparser import ConfigParser
from itertools import chain
parser = ConfigParser()
with open("foo.conf") as lines:
lines = chain(("[top]",), lines)
parser.read_file(lines)
W Pythonie 2 dołącz fałszywy nagłówek sekcji do danych pliku konfiguracyjnego, zawiń wynik w StringIO
obiekt i przekaż go do 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)
Przy każdym z tych podejść ustawienia konfiguracji będą dostępne w parser.items('top')
.
Możesz użyć StringIO również w Pythonie 3, być może ze względu na kompatybilność zarówno ze starymi, jak i nowymi interpreterami Pythona, ale pamiętaj, że teraz znajduje się w io
pakiecie i readfp()
jest przestarzały.
Alternatywnie możesz rozważyć użycie parsera TOML zamiast ConfigParser.