Comment gérer FileNotFoundError lorsque “try .. à l'exception IOError” ne pas l'attraper?
Comment puis-je attraper une erreur sur python 3? J'ai googlé beaucoup, mais aucune réponse ne semble pas fonctionner. Le fichier open.txt n'existe pas alors qu'il devrait imprimer e.errno.
C'est ce que j'ai essayé aujourd'hui:
C'est dans ma fonction définie
try:
with open(file, 'r') as file:
file = file.read()
return file.encode('UTF-8')
except OSError as e:
print(e.errno)
Cependant, je n'imprime pas rien quand je reçois cette erreur
FileNotFoundError: [Errno 2] No such file or directory: 'test.txt'
sans rapport: ne pas utiliser le même nom pour des fins différentes dans le même contexte. Utilisation
assurez-vous que vous exécutez le fichier. Fournir le plein de sperme.
Double Possible de Python "open()" jette les différentes erreurs de "fichier non trouvé" - comment gérer à la fois des exceptions?
text = file.read()
à la place. Garder le texte en Unicode, ne pas coder à octets sauf si c'est absolument nécessaire.assurez-vous que vous exécutez le fichier. Fournir le plein de sperme.
Double Possible de Python "open()" jette les différentes erreurs de "fichier non trouvé" - comment gérer à la fois des exceptions?
OriginalL'auteur Thomas W | 2015-02-20
Vous devez vous connecter pour publier un commentaire.
FileNotFoundError
est une sous-classe deOSError
, attraper l'une ou l'exception de lui-même:Système d'exploitation exceptions ont été retravaillés en Python 3.3;
IOError
a été fusionné dansOSError
. Voir la PEP 3151: le Remaniement de l'OS et IO exception de la hiérarchie article dans les nouveautés de la documentation.Pour plus de détails l' OS Exceptions article pour plus d'informations, faites défiler vers le bas pour une hiérarchie de classe.
Cela dit, votre code doit toujours juste travailler comme
IOError
est maintenant un alias pourOSError
:Assurez-vous de placer votre gestionnaire d'exception dans l'emplacement correct. Regardez de plus près le traceback l'exception assurez-vous que vous ne manquez pas où il est effectivement d'être posée. Dernier mais non le moindre, vous ne redémarrez votre script Python, droit?
Je ne peux pas reproduire le problème avec ce code; il imprime simplement
2
pour moi. Non, le retour à la ligne ne cause pas de problèmes ici.Avec votre aide, j'ai résolu le problème, tnx!
OriginalL'auteur Martijn Pieters