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

Config file schreiben

Beitragvon DanielTheNew » Donnerstag 26. Oktober 2006, 15:01

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()
Benutzeravatar
Leonidas
Administrator
Beiträge: 16023
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Beitragvon Leonidas » Donnerstag 26. Oktober 2006, 16:32

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 Modvoice
BlackJack

Beitragvon BlackJack » Donnerstag 26. Oktober 2006, 18:39

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

Beitragvon DanielTheNew » Freitag 3. November 2006, 17:06

Danke für die Antwort.

Wer ist online?

Mitglieder in diesem Forum: __deets__, Bananasplit, Bing [Bot]