Python avec la déclaration - est-il nécessaire pour le fichier de style ancien manipulation plus?

StackOverflow https://stackoverflow.com/questions/3996358

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()
Était-ce utile?

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"
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top