Muszę czytać, pisać i tworzyć plik INI w Python3.
FILE.INI
default_path = "/path/name/"
default_file = "file.txt"
Plik Pythona:
# Read file and and create if it not exists
config = iniFile( 'FILE.INI' )
# Get "default_path"
config.default_path
# Print (string)/path/name
print config.default_path
# Create or Update
config.append( 'default_path', 'var/shared/' )
config.append( 'default_message', 'Hey! help me!!' )
UPDATED FILE.INI
default_path = "var/shared/"
default_file = "file.txt"
default_message = "Hey! help me!!"
python
python-3.x
ini
Olaf
źródło
źródło
[foobar]
.Odpowiedzi:
To może być coś na początek:
Możesz znaleźć więcej w oficjalnej dokumentacji configparser .
źródło
configparser.MissingSectionHeaderError
przypadku korzystania z dostarczonych plików przykładowych bez odpowiednich nagłówków sekcji.Oto przykład pełnego odczytu, aktualizacji i zapisu.
Plik wejściowy, test.ini
Kod roboczy.
Plik wyjściowy, test_update.ini
Oryginalny plik wejściowy pozostaje nietknięty.
źródło
read
metoda zwraca teraz listę odczytanych plików / plików, ale nie zawartośćhttp://docs.python.org/library/configparser.html
W tym przypadku pomocna może być standardowa biblioteka Pythona.
źródło
Standard
ConfigParser
zwykle wymaga dostępu przezconfig['section_name']['key']
, co nie jest zabawne. Niewielka modyfikacja może zapewnić dostęp do atrybutów:AttrDict
jest klasą pochodną,dict
która umożliwia dostęp zarówno przez klucze słownika, jak i dostęp do atrybutów: to znaczya.x is a['x']
Możemy wykorzystać tę klasę w
ConfigParser
:a teraz otrzymujemy
application.ini
:tak jak
źródło
config._sections.general.key = "3"
nie zmieniać wewnętrznej wartości opcji config i dlatego można jej używać tylko do odczytu. Jeśli po.read()
poleceniu konfiguracja zostanie rozszerzona lub zmieniona (dodaj opcje, pary wartości dla niektórych sekcji, -> która dokonuje interpolacji, co może być bardzo ważne) to ta metoda dostępu nie powinna być używana! Również każdy dostęp, doconfig._sections["section"]["opt"]
którego jest prywatny, omija interpolację i zwraca surowe wartości!ConfigObj to dobra alternatywa dla ConfigParser, która oferuje znacznie większą elastyczność:
Ma pewne wady:
=
… ( żądanie ściągnięcia )fuabr =
zamiast po prostufubar
wyglądają dziwnie i źle.źródło
zawartość w moim pliku backup_settings.ini
kod Pythona do czytania
do pisania lub aktualizacji
wynik
źródło