
moin Ich möchte eine kleine wrapper-Funktion um shelve.open bauen, damit ich Fehler transparent abfangen kann. 1. Frage dazu: Kann man testen ob eine Datei ein gültiges "shelf" ist? 2. Frage: Wenn nicht, kann ich den open-Aufruf ja in ein try-except-statement packen und die exception anydbm.error abfangen. Funktioniert auch, nur erscheint in der Konsole noch eine Fehlermeldung: ---snip--- Exception exceptions.AttributeError: "DbfilenameShelf instance has no attribute 'writeback'" in ign ored ---snap--- Wo kommt die denn her? Und was genau hat die zu bedeuten? Und wieso kann ich die nicht abfangen? Und wieso zum Teufel ist die Antwort 42? thx & cu boesi (der viele Fragen hat und keine Fehlermeldungen mag *g*) -- |¯|__ ___ ___ ____ _ .:·*´¯ | ´_ \ / _ \ / _ \ / __/ |_| |¯| | (_) )( (_) )( __/ \__ \ |¯| /¯¯¯¯\ |____/__\___/__\___>_<___/_|_|________||¯| |_____ _______________________________________________ python-de maillist - python-de@python.net http://python.net/mailman/listinfo/python-de

1. Frage dazu: Kann man testen ob eine Datei ein gültiges "shelf" ist?
Keine Ahnung - kannste vielleicht mit "file" machen, im Notfall dessen DB anpassen.
2. Frage: Wenn nicht, kann ich den open-Aufruf ja in ein try-except-statement packen und die exception anydbm.error abfangen. Funktioniert auch, nur erscheint in der Konsole noch eine Fehlermeldung: ---snip--- Exception exceptions.AttributeError: "DbfilenameShelf instance has no attribute 'writeback'" in ign ored ---snap--- Wo kommt die denn her? Und was genau hat die zu bedeuten? Und wieso kann ich die nicht abfangen? Und wieso zum Teufel ist die Antwort 42?
Ich vermute mal das das ne logging-message ist - haste mal probiert rauszufinden ob das auf stdout oder stderr kommt? Und ob du einen loghandler setzen kannst (falls logging verwendet wird, und nicht print.) Falls du das nicht abklemmen kannst, kannst du immer noch dummy-streams nach sys.stdout/sys.stderr legen - zugegebenermassen haesslich. MfG Diez _______________________________________________ python-de maillist - python-de@python.net http://python.net/mailman/listinfo/python-de

Hi Am 09.11.2005 16:28:00 schrieb Diez B. Roggisch:
Keine Ahnung - kannste vielleicht mit "file" machen, im Notfall dessen DB anpassen.
tut mir leid, das versteh ich nicht.
Ich vermute mal das das ne logging-message ist - haste mal probiert rauszufinden ob das auf stdout oder stderr kommt?
stderr
Und ob du einen loghandler setzen kannst (falls logging verwendet wird, und nicht print.)
Gibs ne Möglichkeit das logging in ein wx.TextCtrl umzuleiten?
Falls du das nicht abklemmen kannst, kannst du immer noch dummy-streams nach sys.stdout/sys.stderr legen - zugegebenermassen haesslich.
Naja das ist nicht das Problem, das ist eine wxPython-Anwendung und da sieht man die Meldung nicht, wenn man das Programm nicht über ne Konsole startet. Ich wüßte halt nur gern, was in meinen Programmen so passiert :) cu boesi -- ...schlafen ist sowieso ungesund... .-==Police Academy I==-. _______________________________________________ python-de maillist - python-de@python.net http://python.net/mailman/listinfo/python-de

Keine Ahnung - kannste vielleicht mit "file" machen, im Notfall dessen DB anpassen.
tut mir leid, das versteh ich nicht.
Das file-Kommando unter unix erzählt einem, was eine Datei für einen Typ hat. Meistens, indem bestimmte "magic numbers" geprüft werden oder so. Und für die Anweisungen, wie das geht, gibt es eine Datenbank mit den Filetypen.
Ich vermute mal das das ne logging-message ist - haste mal probiert rauszufinden ob das auf stdout oder stderr kommt?
stderr
Und ob du einen loghandler setzen kannst (falls logging verwendet wird, und nicht print.)
Gibs ne Möglichkeit das logging in ein wx.TextCtrl umzuleiten?
Ja, wenn du einen (c)StringIO-Object verwendest unb das als stderr-stream setzt. Letzlich ist es natürlich den Programmnierern anzulasten, das sie diesen Kram auf der Konsole sichtbar machen - man _sollte_ dafür logging verwenden....
Falls du das nicht abklemmen kannst, kannst du immer noch dummy-streams nach sys.stdout/sys.stderr legen - zugegebenermassen haesslich.
Naja das ist nicht das Problem, das ist eine wxPython-Anwendung und da sieht man die Meldung nicht, wenn man das Programm nicht über ne Konsole startet. Ich wüßte halt nur gern, was in meinen Programmen so passiert :)
s.o. Diez _______________________________________________ python-de maillist - python-de@python.net http://python.net/mailman/listinfo/python-de

Hallo, Am 09.11.05 schrieb Alexander 'boesi' Bösecke <boesi.josi@gmx.net>:
1. Frage dazu: Kann man testen ob eine Datei ein gültiges "shelf" ist? 2. Frage: Wenn nicht, kann ich den open-Aufruf ja in ein try-except-statement packen und die exception anydbm.error abfangen. Funktioniert auch, nur erscheint in der Konsole noch eine Fehlermeldung:
Du kannst whichdb.whichdb(dateiname) verwenden, um zu überprüfen, welches DBM-Modul das von shelve.open(dateiname) aufgerufene Modul anydbm vermutlich verwenden wird. Siehe http://docs.python.org/lib/module-whichdb.html Lutz -- Lutz Horn <lutz.horn@googlemail.com> http://devrandom.blog.de/ _______________________________________________ python-de maillist - python-de@python.net http://python.net/mailman/listinfo/python-de

Hi Am 10.11.2005 08:14:41 schrieb Lutz Horn:
Du kannst whichdb.whichdb(dateiname) verwenden, um zu überprüfen, welches DBM-Modul das von shelve.open(dateiname) aufgerufene Modul anydbm vermutlich verwenden wird. Siehe http://docs.python.org/lib/module-whichdb.html
Danke, das hilft schon mal ein ganzes Stück weiter. Was bedeutet denn das "attempts to guess" in der Doku? Wann liegt whichdb denn mit seinem Rateversuch falsch? cu boesi -- Ohne Dich waeren die Gefuehle von heute nur die leere Huelle der Gefuehle von damals .-==Die fabelhafte Welt der Amelie==-. _______________________________________________ python-de maillist - python-de@python.net http://python.net/mailman/listinfo/python-de

Hallo, Am 10.11.05 schrieb Alexander 'boesi' Bösecke <boesi.josi@gmx.net>:
Am 10.11.2005 08:14:41 schrieb Lutz Horn:
Danke, das hilft schon mal ein ganzes Stück weiter. Was bedeutet denn das "attempts to guess" in der Doku? Wann liegt whichdb denn mit seinem Rateversuch falsch?
Diese Formulierung ist wohl etwas ungenau. Wenn Du im Detail wissen willst, wie whichdb.whichdb(filename) funktioniert, kansst Du das im Sourcecode nachlesen (z.B. http://cvs.sourceforge.net/viewcvs.py/python/python/dist/src/Lib/whichdb.py?rev=1.20&view=auto). Dort werden einfach der Reihe nach einige Merkmale von DBM-Dateien überprüft. Falls diese Merkmale eine Identifizierung eindeutig erlauben, sollte diese Funktion eigentlich immer richtig raten. Um das beurteilen zu können, kenne ich mich aber mit den DBM-Dateiformaten zu wenig aus. Lutz -- Lutz Horn <lutz.horn@googlemail.com> http://devrandom.blog.de/ _______________________________________________ python-de maillist - python-de@python.net http://python.net/mailman/listinfo/python-de
participants (3)
-
Alexander 'boesi' Bösecke
-
Diez B. Roggisch
-
Lutz Horn