2017-12-30 26 views
0

Ich muss mit Konfigurationsdateien arbeiten, die geschachtelte HTML-Stil-Tags von Schlüssel/Wert-Paaren mit Gleichheitszeichen verwenden.Bearbeiten einer Datei mit verschachtelten Tags und Schlüssel/Wert-Paaren

Ich möchte einen Python-Ansatz, mit dem ich solche Dateien lesen, Abschnitte hinzufügen, löschen oder ändern und die aktualisierte Datei schreiben kann.

Die Dateien wie folgt aussehen:

<tag1> 
key1=value1 
key2=value2 

<tag2> 
key3=value3 
</tag2> 

<tag2> 
key3=value four 

</tag2> 

</tag1> 

So ist es nicht ganz ein HTML oder XML-Datei und keine Windows-INI-Datei entweder. Es gibt keine Leerzeichen um die Gleichheitszeichen herum. Es gibt einige zufällige Leerzeilen in den Dateien, die scheinbar ignoriert werden, und Werte in den Schlüssel/Wert-Paaren verwenden keine Anführungszeichen und können eingebettete Leerzeichen enthalten.

Ich konnte keine Definition oder einen Namen für diese genaue Dateistruktur finden, aber ich fand es schwierig, die Suche zu fokussieren, so dass ich etwas Offensichtliches übersehen habe.

Ist dies eine anerkannte Standarddateistruktur? Wenn ja, wie heißt es?

Ich würde mich über Hinweise freuen, welche Bibliotheken in die Arbeit mit dieser Struktur gezwungen werden können und vielleicht einige Beispiele, wenn sie nicht einfach im Docco verfügbar sind.

Danke.

+0

Was ist Ihr erwartetes Ausgabeformat – Shiva

+0

Das Format ist nur gewöhnliche xml. Der Textinhalt jedes Tags kann unter Verwendung einer einfachen Zeichenfolgenmanipulation (d. H. "Splitlines()" und "partition ('=')") geparst werden. – ekhumoro

+0

@Shiva: Danke! Das Ausgabeformat entspricht dem der Eingabe. Ich hätte klarstellen sollen, dass die Datei, die ich manipuliere, eine ziemlich große (5k - 10k Zeilen) Datei ist, die von einer Anwendung eines Drittanbieters verwendet wird, und ich möchte systematisch eine alter Elemente hinzufügen und entfernen. – Ucalegon

Antwort

0

Zum Aufbewahren von Konfigurationsdateien können Sie das Modul configparser in Python verwenden. Dies macht es sehr einfach, Konfigurationsinformationen in Ihrer App zu lesen.

Für eine Konfigurationsdatei wie folgt aus: -:

from configparser import ConfigParser 
cfg = ConfigParser() 

cfg.read('config.ini') 
['config.ini'] 

cfg.sections() 
['installation', 'debug', 'server'] 

cfg.get('installation','library') 

'/usr/local/lib' 

cfg.getboolean('debug','log_errors') 
True 

cfg.getint('server','port') 
8080 

cfg.getint('server','nworkers') 
32 

print(cfg.get('server','signature')) 

Wenn Sie gehen wollen nur, dass HTML Art

[installation] 
library=%(prefix)s/lib 
include=%(prefix)s/include 
bin=%(prefix)s/bin 
prefix=/usr/local 

[debug] 
log_errors=true 
show_warnings=False 

[server] 
port: 8080 
nworkers: 32 
pid-file=/tmp/spam.pid 
root=/www/root 

Sie diese Konfigurationsdatei lesen kann wie folgt weiter unten von der Konfiguration, Kasse Modul. Es bietet eine breite Palette von Funktionen.

+0

Danke! Das Dateiformat ist etwas, bei dem ich feststecke - ich manipuliere die config/database-Datei, die von einer Anwendung eines Drittanbieters verwendet wird, anstatt den Konfigurationsspeicher einem Programm hinzuzufügen, das ich unter Kontrolle habe. 'xml.etree' sieht wie das aus, was ich brauche, vor allem angesichts der Beobachtung von @ ekhumoro. – Ucalegon

+0

Wenn die Antwort hilfreich war, pls upvote und Häkchen es markieren :) –

Verwandte Themen