Forum: PC-Programmierung Python Config-File


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Sven (Gast)


Bewertung
0 lesenswert
nicht 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)


Bewertung
1 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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. (debegr92)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.