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?
Probleme mit Write() unter Linux.
- Hyperion
- Moderator
- Beiträge: 7478
- Registriert: Freitag 4. August 2006, 14:56
- Wohnort: Hamburg
- Kontaktdaten:
Bestimmt. Wo ist denn mal ein (nicht) funktionierendes Code-Schnipselchen?Stegi95 hat geschrieben: Könnt ihr mir helfen?
Was meinst Du mit array? Wirklich die Klasse aus dem gleichnamigen array-Modul? Oder aus numpy? Oder meinst Du eine Liste?
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
assert encoding_kapiert
Ja. Du hast einen Fehler in Codezeile 7.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?
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.
- Hyperion
- Moderator
- Beiträge: 7478
- Registriert: Freitag 4. August 2006, 14:56
- Wohnort: Hamburg
- Kontaktdaten:
lol! You made my day!/me hat geschrieben: Ja. Du hast einen Fehler in Codezeile 7.
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
assert encoding_kapiert
Ups...ich meine natürlich ne Liste...habs erst gemerkt, als ich abgeschickt hab...
Möglichkeit 1:
Nummer2
Die Möglichkeiten hab ich versucht...
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
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()
- Hyperion
- Moderator
- Beiträge: 7478
- Registriert: Freitag 4. August 2006, 14:56
- Wohnort: Hamburg
- Kontaktdaten:
1.) Dateien öffnet man mit dem "with open() as handler"-idiom.
2.) Wie sollen die Daten denn serialisiert werden? Siehe mal die Beispiele:
oder
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!
2.) Wie sollen die Daten denn serialisiert werden? Siehe mal die Beispiele:
Code: Alles auswählen
1
2
3
Code: Alles auswählen
1 2 3
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!
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
assert encoding_kapiert
- Hyperion
- Moderator
- Beiträge: 7478
- Registriert: Freitag 4. August 2006, 14:56
- Wohnort: Hamburg
- Kontaktdaten:
Stimmt. Hab ich übersehen.Stegi95 hat geschrieben: Im zweiten Beispiel übergebe ich doch Strings, oder? Die Einträge der Liste sind ja Strings...
Die sollte auch klappen - was passiert denn? (Aber Du solltest dennoch das open ändern und die Schleife!)
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
assert encoding_kapiert
- Hyperion
- Moderator
- Beiträge: 7478
- Registriert: Freitag 4. August 2006, 14:56
- Wohnort: Hamburg
- Kontaktdaten:
Damit aber andere sich das nicht zum Vorbild nehmen, hier noch mal eine hübschere Variante:
ok, Trennzeichen müßte man ggf. noch einbauen.
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)
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
assert encoding_kapiert
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.