Est-ce une bonne pratique dépend de python avec...comme déclaration
Je suis curieux de savoir si il est considéré comme sûr ou de bonnes pratiques pour dépendent de python avec...comme déclaration. Par exemple lors de l'ouverture d'un fichier:
with open("myfile","w") as myFile:
#do something
Donc, dans cet exemple, j'ai négligé d'appeler explicitement myFile.close()
cependant, je peux supposer qu'il a été appelée lorsque python est sorti de la with...as
intervention en appelant les objets __exit__()
méthode. Est-ce une bonne pratique/safe dépendre de ce ou serait-il préférable de toujours appeler explicitement file.close()
Êtes-vous conscient de votre code d'exemple essayé de lire un fichier qui a été ouvert pour l'écriture?
Oups, écrit juste un exemple rapide, il fixe maintenant.
Oups, écrit juste un exemple rapide, il fixe maintenant.
OriginalL'auteur Blaine | 2013-02-08
Vous devez vous connecter pour publier un commentaire.
C'est ce contexte, les gestionnaires sont pour, à s'appuyer sur eux pour fermer le fichier pour vous. Contexte les gestionnaires sont appelés, même si il y a une exception.
L'alternative est d'utiliser un
finally
bloc plutôt:mais parce que le bloc à l'intérieur de la
try:
peut être long, au moment où vous arrivez à lafinally
déclaration que vous avez oublié ce que vous avez été.Contexte, les gestionnaires sont de plus en plus puissants encore. Parce que le
__exit__
méthode est informé de toutes les exceptions, ils peuvent agir en tant que gestionnaires d'exceptions (ignorer l'exception, soulever un autre, etc.).OriginalL'auteur Martijn Pieters
Oui, le
with
instruction est la meilleure façon de faire. Depuis Python 2.5, le fichier objet a été équipé avec__enter__()
et__exit__()
méthodes. Le__exit__()
méthode ferme le fichier objet.Python garantit qu'il va appeler la
__exit__()
méthode, mais il n'y a pas de garantie que le__exit__()
méthode à proximité de la ressource, en particulier dans la 3ème partie du code. Vous devez vérifier manuellement que.OriginalL'auteur BigG