¿Cómo puedo cerrar un archivo en Python después de la apertura de esta manera:Cómo cerrar un archivo en Python sin asignar una variable
line = open("file.txt", "r").readlines()[7]
¿Cómo puedo cerrar un archivo en Python después de la apertura de esta manera:Cómo cerrar un archivo en Python sin asignar una variable
line = open("file.txt", "r").readlines()[7]
Hay varias maneras, por ejemplo, es posible que utilices f = open(...)
y del f
.
Si la versión de Python admite que también se puede utilizar el with
declaración:
with open("file.txt", "r") as f:
line = f.readlines()[7]
Esto cierra automáticamente el archivo.
EDIT: No entiendo por qué estoy desanimado por explicar cómo crear una forma correcta de tratar con los archivos. Tal vez "sin asignar una variable" simplemente no es preferible.
explícitamente pregunta cómo hacerlo sin asignar una variable. –
Es mejor usar un administrador de contexto. Esto cerrará el archivo automáticamente al final del bloque y no depender de los detalles de implementación de la colección garbarge
with open("file.txt", "r") as f:
line = f.readlines()[7]
Lo que @Tim Pietzcker escribió a continuación. Soy consciente de este método, sin embargo, me preguntaba si hay otra forma de evitar esto, como mencioné en el título, sin asignarle una variable a la instancia del archivo. – 0sh
la salida esta respuesta http://stackoverflow.com/questions/4599980/python-close- file-descriptor-question – unni
No es así. Deja que Python lo cierre por usted, ya sea durante la recolección de elementos no utilizados o cuando finaliza el programa. Usualmente esto no es un problema y es por eso que muchos ejemplos de código en los documentos de Python lo hacen de esta manera. –
@Tim Pietzcker: en CPython puede confiar en el recuento de referencias, pero se trata de un detalle de implementación que no funcionará en otras implementaciones, como PyPy o Jython. En ese caso, abrir demasiados archivos podría agotar los descriptores de archivos disponibles. – eryksun