501 Stimmen

Was ist die beste Vorgehensweise bei der Verwendung einer Einstellungsdatei in Python?

Ich habe ein Befehlszeilenskript, das ich mit einer Vielzahl von Argumenten ausführe. Ich bin jetzt an einem Punkt angelangt, an dem ich zu viele Argumente habe, und ich möchte auch einige Argumente in Form von Wörterbüchern haben.

Um die Dinge zu vereinfachen, möchte ich das Skript stattdessen mit einer Einstellungsdatei ausführen. Ich weiß nicht wirklich, welche Bibliotheken ich für das Parsen der Datei verwenden soll. Was ist die beste Praxis für diese Aufgabe? Ich könnte mir natürlich selbst etwas ausdenken, aber wenn es eine Bibliothek dafür gibt, bin ich ganz Ohr.

Ein paar "Forderungen":

  • Anstatt die pickle Ich möchte, dass es eine einfache Textdatei ist, die leicht gelesen und bearbeitet werden kann.
  • Ich möchte in der Lage sein, wörterbuchähnliche Daten hinzuzufügen, d.h. eine Form der Verschachtelung sollte unterstützt werden.

Eine vereinfachte Pseudo-Beispiel-Datei:

truck:
    color: blue
    brand: ford
city: new york
cabriolet:
    color: black
    engine:
        cylinders: 8
        placement: mid
    doors: 2

292voto

dugres Punkte 11833

Sie können ein reguläres Python-Modul, z. B. config.py, wie folgt verwenden:

truck = dict(
    color = 'blue',
    brand = 'ford',
)
city = 'new york'
cabriolet = dict(
    color = 'black',
    engine = dict(
        cylinders = 8,
        placement = 'mid',
    ),
    doors = 2,
)

und verwenden Sie sie wie folgt:

import config
print(config.truck['color'])

289voto

Benson Punkte 22021

Die von Ihnen angegebene Beispielkonfiguration ist tatsächlich gültig YAML . Tatsächlich erfüllt YAML alle Ihre Anforderungen, ist in einer Vielzahl von Sprachen implementiert und äußerst menschenfreundlich. Ich kann Ihnen die Verwendung nur wärmstens empfehlen. Die PyYAML-Projekt bietet ein schönes Python-Modul, das YAML implementiert.

Die Verwendung des yaml-Moduls ist äußerst einfach:

import yaml
config = yaml.safe_load(open("path/to/config.yml"))

189voto

Maviles Punkte 2761

Ich fand das am nützlichsten und am einfachsten zu benutzen https://wiki.python.org/moin/ConfigParserExamples

Sie erstellen einfach eine "myfile.ini" wie:

[SectionOne]
Status: Single
Name: Derek
Value: Yes
Age: 30
Single: True

[SectionTwo]
FavoriteColor=Green
[SectionThree]
FamilyName: Johnson

[Others]
Route: 66

Und rufen Sie die Daten wie folgt ab:

>>> import ConfigParser
>>> Config = ConfigParser.ConfigParser()
>>> Config
<ConfigParser.ConfigParser instance at 0x00BA9B20>
>>> Config.read("myfile.ini")
['c:\\tomorrow.ini']
>>> Config.sections()
['Others', 'SectionThree', 'SectionOne', 'SectionTwo']
>>> Config.options('SectionOne')
['Status', 'Name', 'Value', 'Age', 'Single']
>>> Config.get('SectionOne', 'Status')
'Single'

71voto

Anoop Punkte 1667

Yaml und Json sind die einfachsten und am häufigsten verwendeten Dateiformate zum Speichern von Einstellungen/Konfigurationen. PyYaml kann verwendet werden, um Yaml zu parsen. Json ist bereits Teil von Python ab 2.5. Yaml ist ein Superset von Json. Json löst die meisten Anwendungsfälle mit Ausnahme von mehrzeiligen Strings, wo Escaping erforderlich ist. Yaml kümmert sich auch um diese Fälle.

>>> import json
>>> config = {'handler' : 'adminhandler.py', 'timeoutsec' : 5 }
>>> json.dump(config, open('/tmp/config.json', 'w'))
>>> json.load(open('/tmp/config.json'))   
{u'handler': u'adminhandler.py', u'timeoutsec': 5}

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X