Seite 1 von 1

Achtung Anfängerfrage: verschiedene Dateinamen pro Instanz

Verfasst: Freitag 1. Februar 2008, 22:22
von drxt
Guten Abend alle miteinander :D ( <-- Ein schmieriges Lächeln, damit man mir schneller hilft, Gilt natürlich nur für Leute die ein schmieriges Lächeln brauchen, damit sie helfen. Alle anderen können das ignorieren)

Meine Frage:

Ich erstelle eine Instanz von einer Klasse .
Gebe Daten ein.
Speichere die Daten mit "file" und "write" in der Datei text.txt

Jetzt erzeuge ich eine zweite Instantz.
Gebe Daten ein.
Speichere die Daten mit "file" und "write" in der Datei text.txt <-- Da ist das Problem.

Ich will die Daten für jede Instanz in einer neuen Datei speichern.
Instanz1 -> text1.txt
Instanz2 -> text2.txt
Instanz3 -> text3.txt
usw...

Kann mir bitte jemand sagen wie ich das hinkriege?

drxt

Verfasst: Freitag 1. Februar 2008, 22:25
von BlackJack
Tja Du musst halt statt in 'text.txt' in 'text1.txt', 'text2.txt' usw. speichern. Wo genau ist jetzt das Problem!?

Verfasst: Freitag 1. Februar 2008, 22:35
von drxt
Aber wenn ich die Klasse schreibe, dann steht da ja ungefähr sowas:

Code: Alles auswählen

class Cklasse(object):
  def daten_sichern(self):
    sicherung = file('text1.txt' , 'w')
    sicherung.write(String)
    sicherung.close()
Wenn ich jetzt die Instanz Obj1 erzeuge und die Funktion daten_sichern mit Obj1.daten_sichern() aufrufe, dann sichert das Programm den Text in text1.txt

Erzeuge ich aber Instanz Obj2 und rufe von Obj2 die Funktion daten_sichern auf,dann sichert er ja die neuen Daten wieder in text1.txt.
Ich kann in dem Fall ja nicht bestimmen, ob die Datei text1.txt, oder text2.txt heißt, da ich ja schon in der Klasse bestimmt habe, dass es text1.txt ist.
Ich hoffe jetzt ist klarer was ich meine.

Verfasst: Freitag 1. Februar 2008, 22:36
von Python 47

Code: Alles auswählen

for x in range(10):
   f=file("C:\\foo%i.txt"%x, "w")
   f.write("bar")
   f.close()
So vielleicht?

Verfasst: Freitag 1. Februar 2008, 22:40
von drxt

Code: Alles auswählen

"C:\\foo%i.txt"%x
Das kenne ich leider nicht, aber mit all meiner Scharfsinnigkeit vermute ich mal, dass es sowas wie ein variabler Name ist?! :?

Wie heißt sowas in Python, bzw. nach was muss ich googeln, um diese Schreibweise zu lernen?

Verfasst: Freitag 1. Februar 2008, 22:59
von RauberRacing
drxt hat geschrieben:

Code: Alles auswählen

"C:\\foo%i.txt"%x
Das kenne ich leider nicht, aber mit all meiner Scharfsinnigkeit vermute ich mal, dass es sowas wie ein variabler Name ist?! :?

Wie heißt sowas in Python, bzw. nach was muss ich googeln, um diese Schreibweise zu lernen?
soweit ich weiß numerierst du damit die dateinamen automatisch durch, da x ja in der for-schleife alle werte von 0 bis 9 durchläuft. korrigiert mich falls es falsch ist ^^

Verfasst: Samstag 2. Februar 2008, 01:23
von Python 47
Das % ist in Verbindung mit Strings der Formatierungsoperator.

Der Wert x nimmt die Werte von 0-9 an und es werden 10 Dateien mit den Dateinamen

foo0.txt
foo1.txt
foo2.txt
.
.
.
foo9.txt

erzeugt. Ich denke das ist das was du wolltest.

Verfasst: Samstag 2. Februar 2008, 09:11
von Leonidas
Warum macht ihr das alles so kompliziert?

Code: Alles auswählen

class FileWriter(object):
    def __init__(self, filename)
        self.filename = filename

    def write(self):
        f = file(self.filename, 'w')
        f.write('Something')
        f.close()

[FileWriter("text%d.txt" % num).write() for num in xrange(5)]

Verfasst: Samstag 2. Februar 2008, 10:06
von drxt
Guten Morgen *gäääähn*

Danke für die Tipps!

Kann mir bitte trotzdem noch jemand sagen, wie das heißt was ihr da mit dem "%" macht, damit ich das selber nachlesen kann, um es auch wirklich zu verstehen und in anderen Situationen selbständig verwenden zu können?

Verfasst: Samstag 2. Februar 2008, 10:41
von Jan-Peer
Es heißt String-Formatierung / string formatting.

Hier noch der Link zur Doku

http://docs.python.org/lib/typesseq-strings.html

Verfasst: Samstag 2. Februar 2008, 10:43
von drxt
Merci :-{}