Seite 1 von 1

fehler meldung

Verfasst: Mittwoch 13. Januar 2010, 21:12
von zahi
hallo zusammen
ich hab eine fehler meldung bei der ich nicht weiss was es sein kann

string or unicode type required

dies kommt raus wen ich von einer text datei auslese und da den ihhalt in einen textCtrl schreiben will

Code: Alles auswählen

 
self.mylist = wx.TextCtrl(self.panel,wx.ID_ANY,(400,230),wx.Size(120,130))

feld = codes.open("test.dat","r", "utf-8")
self.daten = feld.readlines()
feld.close()
self.mylist.WriteText(self.daten) 

ich bedanke mich schon mal im voraus
mfg

Verfasst: Mittwoch 13. Januar 2010, 21:15
von Defnull
Ja nu rate mal, was feld.readlines() zurück gibt?

Verfasst: Mittwoch 13. Januar 2010, 21:23
von cofi
Oder lies nach: http://docs.python.org/library/stdtypes ... .readlines

Ausserdem, solltest du `with` zum Oeffnen benutzen, oder zumindest ein `try/finally`-Konstrukt.

Verfasst: Mittwoch 13. Januar 2010, 21:24
von zahi
etwas was kein string oder unicode ist?
aber wie kann ich das den ändern?
ich seh weiss echt nicht wie das gehen soll?

Verfasst: Mittwoch 13. Januar 2010, 21:35
von /me
zahi hat geschrieben:etwas was kein string oder unicode ist?
Das ist richtig. Um herauszufinden was du da eigentlich hast kannst du erstens wie von cofi vorgeschlagen in die Dokumentation schauen was readlines() zurückliefert und zweitens die Funktion type() verwenden.
zahi hat geschrieben:aber wie kann ich das den ändern?
ich seh weiss echt nicht wie das gehen soll?
Lerne Python. Bei mir war das zumindest das was geholfen hat.

http://wiki.python.org/moin/BeginnersGuide
http://docs.python.org/tutorial/index.html

Verfasst: Mittwoch 13. Januar 2010, 21:43
von zahi
ich bin es grad am lernen und ich verzweifle an solchen stellen
ich verwende linux zum editieren verwende ich eric
aber ich verstehe nix mit den fehler meldungen anzufangen ...
ihr habt mir grad zahlreiche tipps gegeben und ich hab nacheinander es ausversucht und bekomme immer noch fehler ich hab mit read auch versucht aber irgend wie find ich den fehler nicht

Verfasst: Mittwoch 13. Januar 2010, 21:56
von Hyperion
Wo genau wird der Fehler denn geworfen? Und was sagt Dir type()?

Verfasst: Mittwoch 13. Januar 2010, 22:10
von INFACT

Code: Alles auswählen

 
self.mylist = wx.TextCtrl(self.panel,wx.ID_ANY,(400,230),wx.Size(120,130))

feld = codes.open("test.dat","r", "utf-8")
self.daten = feld.readlines()
feld.close()
self.mylist.WriteText("\n".join(self.daten)) # <- Da
self.daten ist eine liste. mit "\n".join(self.daten) wird jede zeile mit einem newline am ende verbunden und alles zusammengefügt:

self.daten ist zum beispiel:
["zeile 1", "zeile 2", "zeile 3"]
und die join methode macht das daraus:
zeile 1\nzeile 2\nzeile 3
\n ist ein newline, also ein "enter" zeichen.

Wenn du windows benutzt solltest du "\n" durch "\r\n" ersetzten.

Verfasst: Mittwoch 13. Januar 2010, 22:10
von zahi
hey ich hab es geschaft mit read () und anstatt eine textCtrl hab ich einfach eine listctrl genommen weil ich eh eine list speichern wollte

Verfasst: Mittwoch 13. Januar 2010, 22:23
von cofi
INFACT hat geschrieben:Wenn du windows benutzt solltest du "\n" durch "\r\n" ersetzten.
Nein, generell sollte man `os.linesep` benutzen. Oder `open(fname, 'rU')`

Verfasst: Mittwoch 13. Januar 2010, 22:42
von zahi
ich danke für diese ausführliche hilfe das hat mir sehr viel geholfen