Config file schreiben

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.
Antworten
DanielTheNew
User
Beiträge: 13
Registriert: Donnerstag 26. Oktober 2006, 14:37

Hallo

Ich versuche mich gerade an meinem ersten Programmchen um Python zu erlernen.
Leider komme ich nicht wirklich weiter im Moment und deshalb wende ich mich mal an euch.

Kurze beschreibung was das Programm machen soll

- Configfile einlesen.
name1 pfad1 pfad2 <= das ist eine Zeile des configfiles

- Beim einlesen des configfiles wird für jeden namen eine instance der klasse Programm erzeugt und zusätzlich der name in die Liste Programmliste geschrieben.

- Nun arbeiten mit der Programm-klasse

- Jetzt config file wieder schreiben. <= hier ist das problem

-----------------------------------------------------
Mir ist klar das in diesem fall das eingelesen und das geschrieben file gleich sind da nichts gemacht wird zwischendurch.
Aber das ist auch nicht das Problem, sondern das ich es nicht schaffe das configfile richtig zu schreiben.
Ich bin für jede anregung dankbar!
--------------------------------------------------------

Nun zum code


Code: Alles auswählen

#!/usr/bin/python

Programmliste = []

import os
os.system('clear')

class Programm:
	def __init__(self, name, pfad1, pfad2):
		self.status = 0
		self.name = name
		self.pfad1 = pfad1
		self.pfad2 = pfad2
		print '(%s wurde initialisiert)' % self.name
	def startProgramm(self):
		if self.status == 0:
			if os.path.isfile(self.pfad1):
				print '%s wird gestartet...' % self.pfad1
				self.status = 1
			elif os.path.isfile(self.pfad2):
				print '%s wird gestartet...' % self.pfad2
				self.status = 1
			else:
				print 'konnte %s nicht starten da nicht vorhanden!' % self.name
				self.status = 0
		else:
			print '%s laeuft bereits' % self.name
	def stopProgramm(self):
		if self.status == 1:
			self.status = 0
			print '%s wird gestopt...' % self.name
		else:
			print '%s ist bereits gestopt' % self.name
	def programmStatus(self):
		if self.status == 1:
			print 'Status von %s ist ON' % self.name
		else:
			print 'Status von %s ist OFF' % self.name
	def programmReturn(self):
		print '%s %s %s %s' % (self.name, self.pfad1, self.pfad2, self.status)

#----------------------------------------------------------------------------
class Configprogramm:
	def __init__(self):
		pass
	def saveConfig(self):
		print '(Schreibe configfile %s ...)'
		f = file('./das_configfile.conf.neu', 'w') 
		for i in Programmliste:
			print i
			conftext = i.programmReturn()
			print conftext
		f.write(conftext)
		f.close() 	
	def readConfig(self):
		print '(Lese configfile...)' 
		f = file('./das_configfile.conf', 'r') 
		conffile = f.readlines()
		f.close()
		for i in conffile:
			split = i.strip().split(' ')
#			print 'split 0 ist %s' % split[0]
#			print 'split 1 ist %s' % split[1]
#			print 'split 2 ist %s' % split[2]
			split[0] = Programm(split[0], split[1], split[2])
			print '%s = Programm(%s, %s, %s)' % (split[0], split[0], split[1], split[2])
			Programmliste.append(split[0])
		f.close() 
	
print '===> Nun ausgabe der confdate...'
a = Configprogramm()
print '---------------------- LESEN -------------------------'
a.readConfig()
print '-------------------- SCHREIBEN -----------------------'
a.saveConfig()
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Hallo und willkommen im Forum!

Könnstest du deinen Beitrag eidtieren und ihm einen sinnvollen Namen geben? Sonst denke ich nicht, dass jemand interesse haben wird sich damit zu beschäftigen.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
BlackJack

Du musst für jedes Element der `Programmliste` etwas in die Datei schreiben und nicht *nach* der Schleife den letzten Wert von `conftext`. Und wahrscheinlich musst Du an jede Zeile noch ein Zeilenende anhängen, zum Beispiel so ``f.write(s + '\n')``.
DanielTheNew
User
Beiträge: 13
Registriert: Donnerstag 26. Oktober 2006, 14:37

Danke für die Antwort.
Antworten