Seite 1 von 1

config datei oder liste benutzen

Verfasst: Freitag 20. August 2010, 15:54
von The Hit-Man
Ich sitze hier gerade an einem kleinen Problem. Ich müßte eine Art .config Datei haben. Die ich mit Python auslesen kann. Die Datei sollte in etwas folgendes Format haben. startzeit, startdatei, enddatei.
Das Programm ( das ich programmieren möchte ), von zeit zu zeit, Verzeichnisse oder auch Dateien weg kopieren. Das würde dann in etwa so, in der .config Datei aussehen, oder sollte so aussehen.

{
12:00:00
/pfad/zur/datei
/copy/zur/datei
}

Jetzt soll natürlich nicht nur ein Verzeichnis, oder Datei in der .config Datei stehen, sondern beliebig viele. Mein Versuch, sah so aus:

Code: Alles auswählen

#!/usr/bin/env python
# -*- coding: iso-8859-1 -*-

import os
import ConfigParser

class config ():
	
	# werte in die config datei schreiben über array
	def setConfig (self, data):
		
		config_file = "itbcopy.config"
		config = ConfigParser.ConfigParser()
		config.add_section ('config')
		config.set ('config', 'startzeit', data [0])
		config.set ('config', 'startdatei', data [1])
		config.set ('config', 'enddatei' , data [2])
		with open(config_file, 'wb') as configfile:
			config.write(configfile)
	
	# werte aus der config datei lesen und array zurück geben
	def getConfig (self):
		config_file = "itbcopy.config"
		data = {}
		config = ConfigParser.RawConfigParser()
		config.read(config_file)
		
		data [0] = config.get ('config', 'startzeit')
		data [1] = config.get ('config', 'startdatei')
		data [2] = config.get ('config', 'enddatei')
		return ( data )

def main ():
	myconfig = config ()
	myconfig.setConfig (["12:00:00", "/home/", "/mnt/sdb1/home.old"])
	print (myconfig.getConfig ())
	print (myconfig.getConfig ())
	
if __name__ == "__main__":
	main ()

Das Problem daran ist, das wenn ich die .config auslese, ich immer nur den ersten Eintrag bekomme und ich nicht weiß, wie ich eine solche Datei sequenzell lesen soll. Daher wollte ich fragen, ob eine solche Routine eigentlich sinnvoll ist, oder das ich es besser in eine Art .csv Datei schreibe. Allerdings darf ich nur Standart imports nehmen von Python 2.5.
Weiß jemand Rat?

Re: config datei oder liste benutzen

Verfasst: Freitag 20. August 2010, 16:01
von The Hit-Man
ich glaube, ich bin dann hier fündig geworden.

http://de.wikibooks.org/wiki/Python_unt ... x:_Dateien

Re: config datei oder liste benutzen

Verfasst: Freitag 20. August 2010, 16:15
von Hyperion
Also evtl. wäre auch ein Blick auf das json-Modul sinnvoll. Die Seite ist übrigens nicht so ganz aktuell. Dateien öffnet man seit Python 2.6 mit "with".

Re: config datei oder liste benutzen

Verfasst: Freitag 20. August 2010, 20:11
von /me
Hyperion hat geschrieben:Also evtl. wäre auch ein Blick auf das json-Modul sinnvoll. Die Seite ist übrigens nicht so ganz aktuell. Dateien öffnet man seit Python 2.6 mit "with".
Ehe das jemand falsch versteht: Dateien öffnet man selbstverständlich weiterhin mit "open". Es bietet sich allerdings an, dieses im Rahmen von "with" auszuführen.

Re: config datei oder liste benutzen

Verfasst: Samstag 21. August 2010, 09:20
von Hyperion
/me hat geschrieben: Ehe das jemand falsch versteht: Dateien öffnet man selbstverständlich weiterhin mit "open". Es bietet sich allerdings an, dieses im Rahmen von "with" auszuführen.
Stimmt. Das war schlecht formuliert von mir, danke Dir :-)

Re: config datei oder liste benutzen

Verfasst: Samstag 21. August 2010, 20:52
von noisefloor
Hallo,

ConfigParser kann mit verschiedenen Sektionen in der Datei umgehen - du musst diese nur explizit deklarieren. :-)

Beispiel:

bsp.conf:

Code: Alles auswählen

[Datei1]
start= 0800
ende = 1200

[Datei2]
start= 1330
ende = 1400
Dann:

Code: Alles auswählen

>>> import ConfigParser
>>> cfg = ConfigParser.ConfigParser()
>>> cfg.read('bsp.conf')
['bsp.conf']
>>> cfg.get('Datei1','start')
'0800'
>>> cfg.get('Datei1','ende')
'1200'
>>> cfg.get('Datei2','ende')
'1400'
Gruß, noisefloor