Dictionary aus anderen Datei einlesen..

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

str1442 hat geschrieben:Naja, per Editor und mit langen Zeilen schon, ist ja auch ein "Barebone" Format. Allerdings kann man zb auch OpenOffice Calc / Excel (wobei excel Microsoft mässig gern mal Mist zu bauen scheint) verwenden.)
Es ist aber eindeutig eine Konfigurationsdatei. Editierst du Konfigurationsdateien in Excel? Ist auch schlechter geeignet für Versionskontrolle etc.
str1442 hat geschrieben:ConfigParser allerdings erfordert zwingend eine Sektion, die ja hier nicht gegeben ist. Könnte man "Hosts" nennen, wäre aber redundant.
In dem Fall etwas, aber spätestens wenn weitere Parameter festgelegt werden sollen wird es nötig und daher halte ich es im Hinblick auf leichte Erweiterbarkeit akzeptabel. Eine Section hinzuzufügen ist definitiv weniger Overhead, als etwa XML vorschreibt.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Benutzeravatar
str1442
User
Beiträge: 520
Registriert: Samstag 31. Mai 2008, 21:13

Kommt auf die Konfigurationsdatei an. Im hier vorliegenden Fall geht es ja nicht primär um Konfiguration, sondern um eine Zuordnung. Soll zwar auch von Hand editierbar sein, ist aber primär imho keine Konfiguration, denn Konfigurationen haben typischerweise keine Auflistungen, sonderen statische Namen, deren Wert man entsprechend setzt. Insofern verwende ich csv für Konfigurationen auch nicht. Konfigurationsdateien an sich sollten natürlich per Editor bearbeitbar sein, und solange die Zeilen einer csv Datei recht kurz bleiben, geht das auch.

Schlechter bei der Versionskontrolle: Das einzige was mir da einfallen würde wären recht lange "diff" Zeilen, aber XML und co sehen da auch nicht so schön aus.
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

str1442 hat geschrieben:Schlechter bei der Versionskontrolle: Das einzige was mir da einfallen würde wären recht lange "diff" Zeilen, aber XML und co sehen da auch nicht so schön aus.
Ich bin mir nicht sicher, ob CSV dir die Reihenfolge der Einträge garantiert, also kann es da auch dazu kommen, dass die Datei komplett umsortiert wird, was bei Diffs eher blöd aussieht.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Benutzeravatar
str1442
User
Beiträge: 520
Registriert: Samstag 31. Mai 2008, 21:13

Das CSV Modul funktioniert per Generator und gibt einem die Einträge von Anfang bis Ende linear zurück. Ansonsten dürfte es da eher keine Umsortierungen geben. Im Gegenteil, wenn man eine CSV Datei mit OpenOffice Calc editiert, werden die einzelnen Spalten ja auch geordnet dargestellt. Und per Editor funktionierts auch.
Crady
User
Beiträge: 18
Registriert: Freitag 31. Oktober 2008, 18:58

Vielen Dank, Euch allen!

Also meine Version - oder eben die Kompakte von Numerix funktionieren ganz gut...

Muss nur den Port noch in eine Integer wandeln, da ich mich mit einem String nicht verbinden kann.

@Leonidas: (Edit...)

Der ConfigParser ist zwar ganz schön - wenn man nur einen Wert braucht... Wenn ich in meiner Config.ini z.B. eingebe:

Code: Alles auswählen

[Hosts]
Hosts = {port:'IP', port:'IP',....,port:'IP'}
Dann kann ich das (in meinen Versuchen jedenfalls) nur als einen kompletten String auslesen - nicht als Dictionary...

Wenn ich z.B.

Code: Alles auswählen

[Namen]
Namen: Hans, Peter, Uwe
Auslese und dann in einer FOR Schleife drucke bekomme ich:

Code: Alles auswählen

H
a
n
s
,

P
e
t
e
r
,

U
w
e
Statt:

Code: Alles auswählen

Hans
Peter
Uwe
Naja... wie dem auch sei, DIESES Problem ist nun erstmal gelöst :)

Nun mache ich mich mal an einen GUI für die Eingaben... da muss ich aber noch was in meinem Viseo2Brain ansehen bzw. mein Buch weiterlesen :)
Zuletzt geändert von Crady am Sonntag 2. November 2008, 16:17, insgesamt 1-mal geändert.
Benutzeravatar
numerix
User
Beiträge: 2696
Registriert: Montag 11. Juni 2007, 15:09

Code: Alles auswählen

>>> s = "Hans, Peter, Uwe"
>>> for name in s.split(", "):
	print name

	
Hans
Peter
Uwe
BlackJack

@crady: Na dann gib das halt nicht *so* in Deine Config.ini ein, sondern so wie die Zuordnungen in Configdateien eben gemacht werden, als 'Schlüssel=Wert' pro Zeile. :roll:
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

@crady: erstens heiß ich nicht Leonardis (das ist für viele scheinbar ein Problem) und zweitens würde man

Code: Alles auswählen

[Hosts]
6667 = 127.0.0.1
8080 = 192.168.223.5
in die Konfigurationsdatei schreiben. Was auch IMHO übersichtlicher ist.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Crady
User
Beiträge: 18
Registriert: Freitag 31. Oktober 2008, 18:58

Ooops... Sorry, Leonidas :(

War keine Absicht!!!

Danke... werde ich mal probieren :)
Antworten