4 Stimmen

os.rename unter Windows löst WindowsError anstelle von OSError aus

Die Python-Dokumentation sagt dass

os.rename(src, dst)

... Unter Windows wird, wenn dst bereits existiert, ein OSError ausgelöst, auch wenn es sich um eine Datei handelt ...

Bei mir löst es jedoch einen WindowsError aus. Liegt ein Fehler in der Dokumentation vor?

Der zweite Teil der Frage (allgemeiner, aber inspiriert von dem oben formulierten Problem):

UPD Es tut mir leid, der zweite Teil der Frage war falsch. WindowsError wird tatsächlich abgefangen durch except OSError wie es sein sollte.

6voto

Raymond Hettinger Punkte 197261

Da OSError eine Oberklasse von WindowsError ist, fangen Sie einfach die OSError .

FWIW, den Kernentwicklern steht es frei, eine Ausnahme zu machen, die spezifischer ist als das in den Dokumenten versprochene Minimum.

Auch der folgende Code funktioniert gut für mich (Python2.7.2 läuft auf WindowsXP):

try:
    raise os.rename('nonexisting_file', 'def')
except OSError:
    print 'caught'

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X