¿Cuál es la diferencia entre file
y open
en Python? ¿Cuándo debo usar cuál? (Digamos que estoy en 2.5)
138
Siempre debes usar open()
.
Como dice la documentación :
Al abrir un archivo, es preferible usar open () en lugar de invocar este constructor directamente. El archivo es más adecuado para las pruebas de tipo (por ejemplo, escribir "isinstance (f, file)").
Además, file()
se ha eliminado desde Python 3.0.
Dos razones: la filosofía de pitón de "Debería haber una forma de hacerlo" y
file
está desapareciendo.file
es el tipo real (usando, por ejemplo,file('myfile.txt')
está llamando a su constructor).open
es una función de fábrica que devolverá un objeto de archivo.En python 3.0,
file
se pasará de ser integrado a implementado por múltiples clases en laio
biblioteca (algo similar a Java con lectores almacenados en búfer, etc.)fuente
file()
es un tipo, como un int o una lista.open()
es una función para abrir archivos y devolverá unfile
objeto.Este es un ejemplo de cuándo debe usar open:
Este es un ejemplo de cuándo debe usar el archivo:
Como puede ver, hay una buena razón para que ambos existan, y un claro caso de uso para ambos.
fuente
with
declaración.with open(filename, 'r') as f: \ for line in f: \ process(line)
. Esto evita el cierre explícito. Python 2.6 y superior admiten de forma nativa lawith
declaración. En Python 2.5, debe agregarfrom __future__ import with_statement
a la parte superior de su código.file
clase estaba equipada con métodos especiales que se llaman automáticamente cada vez que se abre un archivo a través de unawith
declaración. Estos métodos especiales aseguran que el archivo se abra y cierre de manera adecuada y segura.Funcionalmente, los dos son iguales;
open
llamará defile
todos modos, por lo que actualmente la diferencia es una cuestión de estilo. Los documentos de Python recomiendan usaropen
.La razón es que en versiones futuras no se garantiza que sean iguales (
open
se convertirá en una función de fábrica, que devuelve objetos de diferentes tipos dependiendo de la ruta que se está abriendo).fuente
Solo use open () para abrir archivos. file () en realidad se está eliminando en 3.0, y está en desuso en este momento. Han tenido una especie de relación extraña, pero file () se está ejecutando ahora, por lo que ya no hay que preocuparse.
Lo siguiente es de los documentos de Python 2.6. [material de soporte] agregado por mí.
fuente
Según el Sr. Van Rossum, aunque open () es actualmente un alias para file (), debe usar open () porque esto podría cambiar en el futuro.
fuente