Achtung Anfängerfrage: verschiedene Dateinamen pro Instanz

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
drxt
User
Beiträge: 19
Registriert: Samstag 26. Januar 2008, 17:12

Freitag 1. Februar 2008, 22:22

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
BlackJack

Freitag 1. Februar 2008, 22:25

Tja Du musst halt statt in 'text.txt' in 'text1.txt', 'text2.txt' usw. speichern. Wo genau ist jetzt das Problem!?
drxt
User
Beiträge: 19
Registriert: Samstag 26. Januar 2008, 17:12

Freitag 1. Februar 2008, 22:35

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.
Python 47
User
Beiträge: 574
Registriert: Samstag 17. September 2005, 21:04

Freitag 1. Februar 2008, 22:36

Code: Alles auswählen

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

Thomas :-)
drxt
User
Beiträge: 19
Registriert: Samstag 26. Januar 2008, 17:12

Freitag 1. Februar 2008, 22:40

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?
RauberRacing
User
Beiträge: 25
Registriert: Montag 19. November 2007, 10:03
Wohnort: Schwarzenbach
Kontaktdaten:

Freitag 1. Februar 2008, 22:59

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 ^^
Python 47
User
Beiträge: 574
Registriert: Samstag 17. September 2005, 21:04

Samstag 2. Februar 2008, 01:23

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.
mfg

Thomas :-)
Leonidas
Administrator
Beiträge: 16024
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Samstag 2. Februar 2008, 09:11

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)]
My god, it's full of CARs! | Leonidasvoice vs Modvoice
drxt
User
Beiträge: 19
Registriert: Samstag 26. Januar 2008, 17:12

Samstag 2. Februar 2008, 10:06

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?
Jan-Peer
User
Beiträge: 166
Registriert: Dienstag 2. Oktober 2007, 10:55

Samstag 2. Februar 2008, 10:41

Es heißt String-Formatierung / string formatting.

Hier noch der Link zur Doku

http://docs.python.org/lib/typesseq-strings.html
drxt
User
Beiträge: 19
Registriert: Samstag 26. Januar 2008, 17:12

Samstag 2. Februar 2008, 10:43

Merci :-{}
Antworten