Ich verwende eine Drittanbieter-Bibliothek, die in Ordnung ist, aber nicht mit nicht vorhandenen Dateien so umgehen kann, wie ich es möchte. Wenn es eine nicht-existente Datei geben, statt der guten altenWie hebe ich einen FileNotFoundError richtig an?
FileNotFoundError: [Errno 2] No such file or directory: 'nothing.txt'
Anheben es einige obskure Nachricht aufwirft:
OSError: Syntax error in file None (line 1)
Ich will nicht die fehlende Datei behandeln, wollen nicht Um die Ausnahme nicht zu fangen oder zu behandeln, möchte ich keine benutzerdefinierte Ausnahme auslösen, ich möchte weder die Datei open
noch die Datei erstellen, wenn sie nicht existiert.
Ich möchte nur überprüfen, ob es existiert (os.path.isfile(filename)
wird den Trick tun) und wenn nicht, dann nur eine richtige FileNotFoundError auslösen.
Ich versuchte dies:
#!/usr/bin/env python3
import os
if not os.path.isfile("nothing.txt"):
raise FileNotFoundError
was nur Ausgänge:
Traceback (most recent call last):
File "./test_script.py", line 6, in <module>
raise FileNotFoundError
FileNotFoundError
Das ist besser als ein „Syntaxfehler in der Datei None“, aber wie ist es möglich, die „echte“ zu erhöhen Python-Ausnahme mit der richtigen Nachricht, ohne es neu zu implementieren?
Perfect! Ich habe mich so angestrengt, den richtigen Weg zu finden, dies zu schreiben. – zezollo
@zezollo: Ich habe die Antwort aktualisiert; Ich habe 'os.strerror()' jetzt gefunden (ich wusste * es gab irgendwo eine Zuordnung von Fehlernummer zu String-Nachricht). –