2016-05-29 14 views
1

Ich möchte assert die bestimmten Werte in meiner Konfigurationsdatei, aber ich möchte nicht jede andere Zeile eine assert Anweisung machen. Gibt es einen saubereren Weg, dies zu tun?Einen bestimmten Teil einer Konfigurationsdatei sauber erstellen

assert config["email"]["address"], "You must supply email information." 

assert config["email"]["address"], "You must supply an address to receive." 
self.addresses = config["email"]["address"] 

self.smtpserver = config.get["email"].get("smtpserver", "smtp.gmail.com:587") 

assert config["email"]["sender"], "You must a sender for your email." 
self.sender = config["email"]["sender"] 

assert config["email"]["password"], "You must supply an email password" 
self.password = config["email"]["password"] 

Die config:

"email": { 
    "address": [ 
     "[email protected]" 
    ], 
    "smtpserver": "smtp.potato.com:567", 
    "sender": "[email protected]", 
    "password": "sup3rg00dp455w0rd" 
    } 

Antwort

1

Typische Verfahren zur Sicherstellung der Daten JSON anpaßt spezifisches Format ist JSON Schema zu verwenden.

Während Python kein integriertes Paket zur Handhabung von JSON-Schemas besitzt, gibt es bei PyPi.

Die Verwendung ist ziemlich einfach. Ich zitiere hier Beispiele von PyPi:

from jsonschema import validate 
schema = { 
    "type" : "object", 
    "properties" : { 
     "price" : {"type" : "number"}, 
     "name" : {"type" : "string"}, 
    }, 
} 

# If no exception is raised by validate(), the instance is valid. 
validate({"name" : "Eggs", "price" : 34.99}, schema) 

validate({"name" : "Eggs", "price" : "Invalid"}, schema) 

Traceback (most recent call last): 
    ... 
ValidationError: 'Invalid' is not of type 'number' 
Verwandte Themen