En Python, si abre un archivo sin llamar close()
o cierra el archivo pero no lo usa try
, finally
o la " with
" instrucción, ¿es un problema? ¿O es suficiente como práctica de codificación confiar en la recolección de basura de Python para cerrar todos los archivos? Por ejemplo, si uno hace esto:
for line in open("filename"):
# ... do stuff ...
... ¿esto es un problema porque el archivo nunca se puede cerrar y podría producirse una excepción que impida su cierre? ¿O se cerrará definitivamente al final de la for
declaración porque el archivo queda fuera de alcance?
for
bloques y funciones / clases / módulos. Es mucho más simple que eso: los objetos no tienen ámbitos, solo los nombres. No hay ningún nombre que se refiera a este objeto, por lo que no hay nada aquí para permanecer dentro o fuera del alcance.
for
bucle y mencionando que el archivo se cierra por una razón completamente diferente. No entra en qué ámbitos hay en Python, ya que no es relevante aquí.
for
bloque. Su recuento de referencia irá a cero, haciendo que se cierre automáticamente, pero solo las funciones, clases y módulos definen ámbitos en Python, no otras declaraciones compuestas.