¿Cuál es la diferencia entre filey openen 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
fileestá desapareciendo.filees el tipo real (usando, por ejemplo,file('myfile.txt')está llamando a su constructor).openes una función de fábrica que devolverá un objeto de archivo.En python 3.0,
filese pasará de ser integrado a implementado por múltiples clases en laiobiblioteca (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á unfileobjeto.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
withdeclaració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 lawithdeclaración. En Python 2.5, debe agregarfrom __future__ import with_statementa la parte superior de su código.fileclase estaba equipada con métodos especiales que se llaman automáticamente cada vez que se abre un archivo a través de unawithdeclaración. Estos métodos especiales aseguran que el archivo se abra y cierre de manera adecuada y segura.Funcionalmente, los dos son iguales;
openllamará defiletodos 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 (
opense 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