Seite 1 von 1

Probleme mit Write() unter Linux.

Verfasst: Montag 10. Januar 2011, 20:49
von Stegi95
Hey Leute,
ich hab ein kleines Problem mit write unter Linux.
Ich habe ein String Array mit einer beliebigen Anzahl, welches ich sauber geordnet in eine *.txt speichern möchte(Die txt liegt auf dem Desktop). Ich habs sowohl mit write+for schleife(jeden eintrag einzeln schreben) und writelines(ganzes Array schreiben) versucht, aber die .txt Datei bleibt leer. Es kommt keine Fehlermeldung. Betriebssystem ist Linux Mint 10

Könnt ihr mir helfen?

Re: Probleme mit Write() unter Linux.

Verfasst: Montag 10. Januar 2011, 21:00
von Hyperion
Stegi95 hat geschrieben: Könnt ihr mir helfen?
Bestimmt. Wo ist denn mal ein (nicht) funktionierendes Code-Schnipselchen?

Was meinst Du mit array? Wirklich die Klasse aus dem gleichnamigen array-Modul? Oder aus numpy? Oder meinst Du eine Liste?

Re: Probleme mit Write() unter Linux.

Verfasst: Montag 10. Januar 2011, 21:01
von /me
Stegi95 hat geschrieben:Ich habe ein String Array mit einer beliebigen Anzahl, welches ich sauber geordnet in eine *.txt speichern möchte(Die txt liegt auf dem Desktop). Ich habs sowohl mit write+for schleife(jeden eintrag einzeln schreben) und writelines(ganzes Array schreiben) versucht, aber die .txt Datei bleibt leer. Es kommt keine Fehlermeldung. Betriebssystem ist Linux Mint 10

Könnt ihr mir helfen?
Ja. Du hast einen Fehler in Codezeile 7.

Jetzt mal im Ernst: Wie sollen wir dir helfen können wenn du nicht einmal einen minimalen Code zeigst der deiner Meinung nach funktionieren müsste, es aber nicht tut. "Geht nicht" ist so ziemlich die sinnloseste Fehlerbeschreibung die man liefern kann.

Re: Probleme mit Write() unter Linux.

Verfasst: Montag 10. Januar 2011, 21:02
von Hyperion
/me hat geschrieben: Ja. Du hast einen Fehler in Codezeile 7.
lol! You made my day! :mrgreen:

Re: Probleme mit Write() unter Linux.

Verfasst: Montag 10. Januar 2011, 21:06
von Stegi95
Ups...ich meine natürlich ne Liste...habs erst gemerkt, als ich abgeschickt hab...

Möglichkeit 1:

Code: Alles auswählen

liste=["1","2","3"] #Diese Liste soll gespeichert werden
fob=open("Pfad","w")
fob.writelines(liste)
fob.close
Nummer2

Code: Alles auswählen

liste=["1","2","3"] 
fob=open("Pfad","w")
for i in range(len(liste)):
    fob.write(liste[i])
    fob.write(" ")
fob.close()
Die Möglichkeiten hab ich versucht...

Re: Probleme mit Write() unter Linux.

Verfasst: Montag 10. Januar 2011, 21:12
von Hyperion
1.) Dateien öffnet man mit dem "with open() as handler"-idiom.

2.) Wie sollen die Daten denn serialisiert werden? Siehe mal die Beispiele:

Code: Alles auswählen

1
2
3
oder

Code: Alles auswählen

1 2 3
ggf. mit anderem Trennzeichen

Oder noch anders?

Lies Dir doch (noch) mal die Doku zu File Objekten durch! Dort steht doch, dass man nur Strings bzw. Iterables von Strings speichern kann. Du übergibst aber keine Strings.

Dein 2. Beispiel ist übrigens immer eine schlechte Idee, da man über die Elemente einer Liste direkt iterieren kann!

Re: Probleme mit Write() unter Linux.

Verfasst: Montag 10. Januar 2011, 21:16
von Stegi95
Die zweite Methode sieht schöner aus...aber insgesammt ist das Trennzeichen egal.

Im zweiten Beispiel übergebe ich doch Strings, oder? Die Einträge der Liste sind ja Strings...

Re: Probleme mit Write() unter Linux.

Verfasst: Montag 10. Januar 2011, 21:18
von Hyperion
Stegi95 hat geschrieben: Im zweiten Beispiel übergebe ich doch Strings, oder? Die Einträge der Liste sind ja Strings...
Stimmt. Hab ich übersehen.

Die sollte auch klappen - was passiert denn? (Aber Du solltest dennoch das open ändern und die Schleife!)

Re: Probleme mit Write() unter Linux.

Verfasst: Montag 10. Januar 2011, 21:20
von Stegi95
Ok, hier kann zugemacht werden...ich hab das Problem gefunden...ich hatte nen Fehler beim Füllen des Arrays gemacht...Habs nur nicht gemerkt...

Re: Probleme mit Write() unter Linux.

Verfasst: Montag 10. Januar 2011, 21:32
von Hyperion
Damit aber andere sich das nicht zum Vorbild nehmen, hier noch mal eine hübschere Variante:

Code: Alles auswählen

data = ["1", "2", "3"]
with open(filename, "w") as outfile:
    for item in data:
        outfile.write(item)
    # oder
    map(outfile.write, liste)
ok, Trennzeichen müßte man ggf. noch einbauen.

Re: Probleme mit Write() unter Linux.

Verfasst: Montag 10. Januar 2011, 21:37
von derdon
Eine Liste zu erstellen und die dann wegzuwerfen, nur um eine explizite for-Schleife zu sparen, ist aber auch kein gutes Vorbild. Das ist eher ein Beispiel, wie man es nicht machen sollte. Also bitte nur den ersten Vorschlag von Hyperion beachten.