Heim >Backend-Entwicklung >Python-Tutorial >Detaillierte Erläuterung des ConfigParser des Python-Parsing-Konfigurationsmoduls

Detaillierte Erläuterung des ConfigParser des Python-Parsing-Konfigurationsmoduls

高洛峰
高洛峰Original
2016-10-18 09:13:101200Durchsuche

1. Grundlegende Lesekonfigurationsdatei

-read(filename) liest direkt den Inhalt der INI-Datei

-sections() ruft alle Abschnitte ab und gibt sie in Form einer Liste zurück

-options(section) Alle Optionen des Abschnitts abrufen

-items(section) Alle Schlüssel-Wert-Paare des Abschnitts abrufen

-get(section,option ) Rufen Sie den Abschnitt ab. Der Wert der Option im Abschnitt wird als String-Typ zurückgegeben.

-getint(section, option) Ruft den Wert der Option im Abschnitt ab und wird als int-Typ zurückgegeben. Es gibt auch entsprechende getboolean() und getfloat()-Funktionen.

2. Grundlegende Schreibkonfigurationsdatei

-add_section(section) Einen neuen Abschnitt hinzufügen

-set(section, option, value) zur Option im Abschnitt Um Einstellungen vorzunehmen, Sie müssen write aufrufen, um den Inhalt in die Konfigurationsdatei zu schreiben.

3. Grundlegendes Beispiel

test.conf

[sec_a] 
a_key1 = 20 
a_key2 = 10 
   
[sec_b] 
b_key1 = 121 
b_key2 = b_value2 
b_key3 = $r 
b_key4 = 127.0.0.1

parse_test_conf.py

import ConfigParser 
cf = ConfigParser.ConfigParser() 
#read config 
cf.read("test.conf") 
# return all section 
secs = cf.sections() 
print 'sections:', secs 
   
opts = cf.options("sec_a") 
print 'options:', opts 
   
kvs = cf.items("sec_a") 
print 'sec_a:', kvs 
   
#read by type 
str_val = cf.get("sec_a", "a_key1") 
int_val = cf.getint("sec_a", "a_key2") 
   
print "value for sec_a's a_key1:", str_val 
print "value for sec_a's a_key2:", int_val 
   
#write config 
#update value 
cf.set("sec_b", "b_key3", "new-$r") 
#set a new value 
cf.set("sec_b", "b_newkey", "new-value") 
#create a new section 
cf.add_section('a_new_section') 
cf.set('a_new_section', 'new_key', 'new_value') 
   
#write back to configure file 
cf.write(open("test.conf", "w"))

Terminalausgabe abrufen:

sections: ['sec_b', 'sec_a'] 
options: ['a_key1', 'a_key2'] 
sec_a: [('a_key1', "i'm value"), ('a_key2', '22')] 
value for sec_a's a_key1: i'm value 
value for sec_a's a_key2: 22

Aktualisierte Testkonfiguration

[sec_b] 
b_newkey = new-value 
b_key4 = 127.0.0.1 
b_key1 = 121 
b_key2 = b_value2 
b_key3 = new-$r 
   
[sec_a] 
a_key1 = i'm value 
a_key2 = 22 
   
[a_new_section] 
new_key = new_value

4. Das ConfigParser-Modul von Python definiert 3 Klassen für die Bearbeitung von INI-Dateien. Dies sind RawConfigParser, ConfigParser und SafeConfigParser. RawCnfigParser ist die einfachste Klasse zum Lesen von INI-Dateien. ConfigParser und SafeConfigParser unterstützen das Parsen von %(value)s-Variablen.

Konfigurationsdatei test2.conf festlegen

[portal] 
url = http://%(host)s:%(port)s/Portal 
host = localhost 
port = 8080

RawConfigParser verwenden:

import ConfigParser 
  
cf = ConfigParser.RawConfigParser() 
  
print "use RawConfigParser() read" 
cf.read("test2.conf") 
print cf.get("portal", "url") 
  
print "use RawConfigParser() write" 
cf.set("portal", "url2", "%(host)s:%(port)s") 
print cf.get("portal", "url2")

Terminalausgabe abrufen:

use RawConfigParser() read 
http://%(host)s:%(port)s/Portal 
use RawConfigParser() write 
%(host)s:%(port)s

Verwenden Sie stattdessen ConfigParser:

import ConfigParser 
  
cf = ConfigParser.ConfigParser() 
  
print "use ConfigParser() read" 
cf.read("test2.conf") 
print cf.get("portal", "url") 
  
print "use ConfigParser() write" 
cf.set("portal", "url2", "%(host)s:%(port)s") 
print cf.get("portal", "url2")

Terminalausgabe abrufen:

use ConfigParser() read 
http://localhost:8080/Portal 
use ConfigParser() write 
localhost:8080

Verwenden Sie stattdessen SafeConfigParser:

import ConfigParser 
  
cf = ConfigParser.SafeConfigParser() 
  
print "use SafeConfigParser() read" 
cf.read("test2.conf") 
print cf.get("portal", "url") 
  
print "use SateConfigParser() write" 
cf.set("portal", "url2", "%(host)s:%(port)s") 
print cf.get("portal", "url2")

Terminalausgabe abrufen (der Effekt ist der gleiche wie bei ConfigParser):

use SafeConfigParser() read 
http://localhost:8080/Portal 
use SateConfigParser() write 
localhost:8080


Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn