Ich verwende derzeit Python 2 für ein Projekt, das eine integrierte Python 3-Ausnahme benötigt: FileNotFoundError
. Wie mache ich es?Wie importiere ich FileNotFoundError von Python 3?
Antwort
Sie können natürlich alle Ausnahmen definieren, die Sie möchten.
Aber sie werden dir nichts nützen. Der ganze Punkt von FileNotFoundError
ist, dass jede Python-Operation, die zu einem Datei-nicht-gefunden-Fehler führt, diese Ausnahme auslöst. Wenn Sie nur Ihre eigene Ausnahme definieren, wird dies nicht wahr. Alles, was Sie bekommen, ist ein OSError
(oder IOError
, abhängig von 2.x-Version) mit einem entsprechenden errno
Wert. Wenn Sie versuchen, eine benutzerdefinierte FileNotFoundError
zu behandeln, wird Ihr Handler nie aufgerufen.
Also, was Sie wirklich wollen, ist (zum Beispiel):
try:
f = open(path)
except OSError as e:
if e.errno == errno.ENOENT:
# do your FileNotFoundError code here
else:
raise
Scheint wie die [korrekte Ausnahme ist IOError] (https://docs.python.org/2/library/exceptions.html#exceptions.IOError). – Mansour
@Mansour: für 2.6-2.7 sind die beiden ziemlich sauber geteilt. Für ältere Versionen (vor allem, wenn Sie nicht CPython verwenden), ist es eine andere Geschichte (und einige Dinge, wie Socket-Verbindungsfehler, waren _neither_). Daher "abhängig von der Version 2.x". Um sicher zu sein, können Sie immer beide oder (wenn Sie nicht weit zurück zu 1.5 gehen müssen) ihre gemeinsame Unterklasse EnvironmentError abfangen. – abarnert
Ich habe das Beispiel gelesen und den Text komplett ignoriert! – Mansour
Sie können einfach erstellen Sie die FileNotFoundError
Ausnahme selbst:
class FileNotFoundError(OSError):
pass
Diese neue Ausnahmeklasse erbt von OSError
genau wie der in Python 3.x
Hier ist eine Referenz auf User-defined Exceptions in Python.
Sie IOError
stattdessen verwenden:
ausgelöst, wenn eine I/O-Operation (wie eine print-Anweisung, die integrierte open() - Funktion oder eine Methode eines Dateiobjekts) schlägt aus E/A-Gründen fehl, zB "Datei nicht gefunden" oder "Festplatte voll".
Diese Klasse ist von EnvironmentError abgeleitet. Weitere Informationen zu Ausnahmeninstanzattributen finden Sie in der obigen Diskussion.
Geändert in Version 2.6: Changed socket.error, um dies als eine Basisklasse zu verwenden.
Können Sie mehr Kontext bereitstellen? In der Regel reichen die Antworten eines Satzes für SO nicht aus. – sadmicrowave
Ein Link oder Zitat zu der Dokumentation wäre großartig. ^^ Das ist viel mehr inklusive +1 – sadmicrowave
Ich habe das Zitat hinzugefügt. und markierte den Teil "Datei nicht gefunden" :-) –
- 1. Subprozess Modul auf Python FileNotFoundError
- 2. Python FileNotFoundError bei Verwendung von open()
- 3. Wie importiere ich eine Funktion von Python-Datei von Boost.Python
- 4. Wie hebe ich einen FileNotFoundError richtig an?
- 5. Wie importiere ich Tkinter?
- 6. Wie importiere ich Python-Datei von Git Submodul
- 7. Wie importiere ich Module in boost :: python eingebetteten Python-Code?
- 8. Wie importiere ich benutzerdefinierte Python-Variablen in Python NOTEBOOK?
- 9. Wie importiere ich .SQL-Dateien in SQLite 3?
- 10. Wie importiere ich ein Modul in Python mit importlib.import_module
- 11. Wie importiere ich aus einer Datei im aktuellen Verzeichnis in Python 3?
- 12. Wie importiere ich Fotos von Facebook?
- 13. Wie importiere ich von einem Geschwistermodul?
- 14. Wie importiere/exportiere ich Datenbank von PouchDB
- 15. apt-vim Plugin FileNotFoundError
- 16. Wie importiere ich pyspark in anaconda
- 17. Wie importiere ich `... /` in React?
- 18. Wie importiere ich eine Klasse aus Unittest in Python?
- 19. Wie importiere ich die Klasse aus dem Python-Modul (boost.python)?
- 20. Wie importiere ich die Python-Klassendatei aus demselben Verzeichnis?
- 21. Wie importiere ich eine Python-Bibliothek aus einem anderen Ordner?
- 22. Wie importiere ich alle Submodule eines Python-Namespacepakets?
- 23. Wie importiere ich ein aktuelles Paket während des Python Interpreters?
- 24. Wie importiere ich moment.js angular2
- 25. Wie importiere ich einen großen Datensatz?
- 26. Ich importiere geeignete Datenbanktyp-Deklarationen aus Strings in Python
- 27. Wie importiere ich externe Geometrie mit pythrejs
- 28. Wie importiere ich Pakete mit py.test richtig?
- 29. Wie importiere ich die Django DoesNotExist-Ausnahme?
- 30. FileNotFoundError: [WinError 2] Das System kann die angegebene Datei nicht finden, während ich pytheseract python-3.x verwende.
Sie können das nicht tun. Warum nicht einfach die Ausnahme selbst definieren? –
'versuchen' dann' außer: pass' – Hackaholic
@Hackaholic Err ... nein. Warum sollte er das tun wollen? –