Was ist die beste Übung mit einer Einstellungsdatei in Python?

Ich habe ein Kommandozeilen-Skript, das ich mit vielen Argumenten laufe. Ich bin jetzt zu einem Punkt gekommen, wo ich zu viele Argumente habe, und ich möchte auch einige Argumente im Wörterbuch-Formular haben.

Um die Dinge zu vereinfachen, möchte ich stattdessen das Skript mit einer Einstellungsdatei ausführen. Ich weiß nicht wirklich, welche Bibliotheken für das Parsing der Datei verwendet werden sollen. Was ist die beste Praxis dafür? Ich könnte natürlich selbst etwas hämmern, aber wenn es eine Bibliothek dafür gibt, bin ich alle Ohren.

Ein paar "Forderungen":

  • Anstatt mit pickle Ich möchte, dass es sich um eine gerade Vorwärts Textdatei, die leicht gelesen und bearbeitet werden kann.
  • Ich möchte in der Lage sein, Wörterbuch-ähnliche Daten in sie hinzufügen, dh irgendeine Form von Nesting sollte unterstützt werden.

Eine vereinfachte Pseudo-Beispieldatei:

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

  • Textdatei-Parsing mit Python
  • Analysieren einer Datenmatrix mit HH: MM: SS.mmm mal mit numpy.loadtxt
  • Python-Parser Modul-Tutorial
  • Optparse und strings
  • Kann BeautifulSoup parse xml, wenn bestimmte Tag ist selbst-schließen und nicht zur gleichen Zeit
  • Abrufen von Parametern aus einer URL
  • Aufteilen einer Textdatei basierend auf ihrem Inhalt
  • Pandas read_fwf lädt nicht den gesamten Inhalt der Datei
  • 4 Solutions collect form web for “Was ist die beste Übung mit einer Einstellungsdatei in Python?”

    Auschecken:

    http://wiki.python.org/moin/ConfigParserShootout

    Für eine Liste der Konfigurations-Parser in Python. Einige unterstützen verschachtelte Konfigurationsdateien.

    Sie können ein normales Python-Modul haben, sagen Sie config.py, wie folgt:

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

    Und benutze es so:

     import config print config.truck['color'] 

    Die Beispielkonfiguration, die Sie zur Verfügung stellen, ist tatsächlich gültig Yaml. Tatsächlich erfüllt yaml alle Ihre Anforderungen, ist in einer Vielzahl von Sprachen implementiert und ist äußerst menschlich freundlich. Ich würde es sehr empfehlen, es zu benutzen. Das PyYAML-Projekt bietet ein schönes Python-Modul, das yaml implementiert.

    Das Yaml-Modul zu benutzen ist sehr einfach:

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

    Yaml und Json sind die einfachsten und am häufigsten verwendeten Dateiformate, um Einstellungen / config zu speichern. PyYaml kann verwendet werden, um yaml zu analysieren. Json ist schon Teil von Python von 2,5. Yaml ist eine Obermenge von Json. Json wird die meisten Anwendungsfälle außer Multi-Line-Strings lösen, wo es entkommt. 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} 
    Python ist die beste Programmiersprache der Welt.