Hallo, ich würde gerne ein menschenlesbares Config-File haben in dem man einige Einstellungen vornehmen kann, die dann beim Start meines Pythonprogramms berücksichtigt werden. Bisher habe ich pickerl verwendet um Variablen in eine Datei zu schreiben und auch wieder zu lesen. Allerdings kommt dabei ja leider nichts raus, dass einfach mit einem Texteditor angepasst werden könnte. Gibt es da irgendwelche best-practices? Bevor ich nun das Rad neu erfinde?
Ich persönlich finde TOML sehr schick. Das ist schlank und trotzdem mächtig genug für eigentlich alles aber vor allem ist es sehr gut lesbar: https://github.com/toml-lang/toml Implementierungen für Python wären z.B. https://github.com/avakar/pytoml oder https://github.com/uiri/toml Alternativen wären YAML oder JSON.
Warum nicht einfach Python selber? Man schreibt die Konfiguration in ein eigenes Python-File, wo sie als Variablen definiert wird. JSON ist eigentlich exakt das, nur für JavaScript.
Warum nicht ConfigParser? Ini-Dateien lesen/parsen/schreiben... Ist in der Standard Library: Python 2.x https://docs.python.org/2/library/configparser.html Python 3.x https://docs.python.org/3/library/configparser.html
Oder wenn du es wirklich ganz einfach haben willst mach es so: erstelle eine config.py Schreibe alle deine Variablen rein, das können alle Typen von Python sein, also Listen, Dict, Strings, Integer... Mache einen Import aus deinem Programm.
1 | #!/usr/bin/env python3
|
2 | |
3 | import ast |
4 | |
5 | dataReadFromConfigfile = ''' |
6 | {
|
7 | 'sNum':'14', |
8 | 'iNum':15, |
9 | 'lx':[1,2,3] |
10 | }
|
11 | '''
|
12 | |
13 | cfg = ast.literal_eval(dataReadFromConfigfile) |
14 | print(cfg) |
15 | print(type(cfg)) |
16 | print(cfg['sNum']) |
17 | print(cfg['iNum']) |
18 | print(cfg['lx']) |
{'iNum': 15, 'sNum': '14', 'lx': [1, 2, 3]} <class 'dict'> 14 15 [1, 2, 3] Das ist die sichere, einfache Variante.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.