Python avec la déclaration - est-il nécessaire pour le fichier de style ancien manipulation plus?
-
10-10-2019 - |
Question
ayant la déclaration de with
, est-il jamais nécessaire d'ouvrir un fichier / vérifier des exceptions / fermeture manuelle ne des ressources, comme dans
try:
f = open('myfile.txt')
for line in f:
print line
except IOError:
print 'Could not open/read file'
finally:
f.close()
La solution
Votre code actuel tente de gérer l'exception du fichier ne se trouve, ou des autorisations d'accès insuffisants, etc., qu'un bloc with open(file) as f:
aurait pas fait.
En outre, dans ce cas, le bloc finally:
aurait soulevé un NameError
depuis f
n'aurait pas été défini.
Dans un bloc de with
, toute exception (quel qu'il soit, peut-être une division par zéro dans votre code) qui se produit dans le bloc sera toujours élevé, mais même si vous ne manipulez pas , votre dossier sera toujours fermé. Ce quelque chose est tout à fait différent.
Qu'est-ce que vous voulez est probablement:
try:
with open("myfile.txt") as f:
do_Stuff() # even if this raises an exception, f will be closed.
except IOError:
print "Couldn't open/read myfile.txt"