ubuntuusers.de

Python: Variablen aus ein Konfigurationsdatei "holen"

Status: Gelöst | Ubuntu-Version: Ubuntu 14.04 (Trusty Tahr)
Antworten |

carchaias

Avatar von carchaias

Anmeldungsdatum:
6. Oktober 2007

Beiträge: 295

Wohnort: Ratingen

Hi, ich versuche derzeit ein kleines Skript in Python zu schreiben. Es liest Texte aus einer csv Datei und fügt sie in ein MediaWiki über die API, bei den entsprechenden Bildern ein. Das funktioniert soweit auch. Derzeit habe ich in dem Skript einen ganzen Block mit Variablen, die ich benötige um es unterschiedliche Situationen anzupassen - man könnte auch sagen eine "Konfiguration". Der sieht so aus:

1
2
3
4
5
6
7
8
9
listepic = 'Fotos.csv'
vorlage_aks_alle = ''
dateiendungen = ('.jpg','.JPG','.gif','.GIF','.png','.PNG','.bmp','.BMP','.PDF','.pdf','.doc','.xls') #erlaubte Dateiendungen für die Liste
kontrolldatei = 'gallery2sempic_check.txt'
AksMinLen = 4
aks= ''
AddKategorie = '[[Kategorie:Sempic]]'
...
..

Ich finde es allerdings ziemlich blöde, wenn man in die Programmdatei muss um das Skript anders zu konfigurieren. Daher würde ich diesen Block gerne in eine Art Konfigurationsdatei auslagern. Kann mir jemand nen Tipp geben, wie man sowas macht?

seahawk1986

Anmeldungsdatum:
27. Oktober 2006

Beiträge: 11275

Wohnort: München

Was du immer machen kannst, ist das in eine eigene Datei zu legen und die dann zu importieren - also z.B.

1
2
# config.py
listepic = 'Fotos.csv'

Und im Hauptprogramm holst du dir dann die Werte:

1
2
from config import *
print(listepic)

Ansonsten kannst du dich auch mit den üblichen Verdächtigen austoben:

carchaias

(Themenstarter)
Avatar von carchaias

Anmeldungsdatum:
6. Oktober 2007

Beiträge: 295

Wohnort: Ratingen

Ach, sowas ähnliches hatte ich bereits probiert. Erschien mir irgendwie intuitiv.

1
import config

Das tut's aber nicht? Warum?

Dein Vorschlag klappt. Ich teste das mal weiter.

Danke für die Links. Das erscheint mir aber etwas oversized für meinen Fall.

seahawk1986

Anmeldungsdatum:
27. Oktober 2006

Beiträge: 11275

Wohnort: München

carchaias schrieb:

Ach, sowas ähnliches hatte ich bereits probiert. Erschien mir irgendwie intuitiv.

1
import config

Das tut's aber nicht? Warum?

Damit stehen dir die importierten Variablen z.b. als config.listepic zur Verfügung.

noisefloor Team-Icon

Anmeldungsdatum:
6. Juni 2006

Beiträge: 29567

Hallo,

Dein Vorschlag klappt. Ich teste das mal weiter.

Wobei *-Importe zwar funktionieren, aber nicht so dolle sind. Weil man dann nicht unbedingt weiß, was man sich alle in den lokalen Namensraum importiert.

Damit stehen dir die importierten Variablen z.b. als config.listepic zur Verfügung.

Ist eigentlich schöner, weil man dann explizit sieht, dass man das Attribut listepic vom Objekt config benutzt.

Das erscheint mir aber etwas oversized für meinen Fall.

Kommt drauf an. Wenn du eine INI-Datei nimmst und das configparser-Modul kannst du die INI-Datei sinnvoll in Sektionen unterteilen und kannst bei Lesen von Schlüsseln direkt noch eine Default-Wert vorgeben, falls der SChlüssel nicht existiert.

Gruß, noisefloor

carchaias

(Themenstarter)
Avatar von carchaias

Anmeldungsdatum:
6. Oktober 2007

Beiträge: 295

Wohnort: Ratingen

noisefloor schrieb:

Damit stehen dir die importierten Variablen z.b. als config.listepic zur Verfügung.

Ist eigentlich schöner, weil man dann explizit sieht, dass man das Attribut listepic vom Objekt config benutzt.

Stimmt auch wieder. Vieleicht ändere ich das noch. Vielen Dank.

Antworten |