2011-10-28 13 views
6

¿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]

+0

la salida esta respuesta http://stackoverflow.com/questions/4599980/python-close- file-descriptor-question – unni

+2

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. –

+5

@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

Respuesta

1

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.

+3

explícitamente pregunta cómo hacerlo sin asignar una variable. –

5

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] 
+2

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

Cuestiones relacionadas