Forum: PC-Programmierung Python Config-File


von Sven (Gast)


Lesenswert?

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?

von Christopher J. (christopher_j23)


Lesenswert?

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.

von Rolf M. (rmagnus)


Lesenswert?

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.

von Tester (Gast)


Lesenswert?

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

von Dennis X. (Gast)


Lesenswert?

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.

von Norbert (Gast)


Lesenswert?

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
Noch kein Account? Hier anmelden.