Respuestas:
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 la io
biblioteca (algo similar a Java con lectores almacenados en búfer, etc.)
file()
es un tipo, como un int o una lista. open()
es una función para abrir archivos y devolverá un file
objeto.
Este es un ejemplo de cuándo debe usar open:
f = open(filename, 'r')
for line in f:
process(line)
f.close()
Este es un ejemplo de cuándo debe usar el archivo:
class LoggingFile(file):
def write(self, data):
sys.stderr.write("Wrote %d bytes\n" % len(data))
super(LoggingFile, self).write(data)
Como puede ver, hay una buena razón para que ambos existan, y un claro caso de uso para ambos.
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 la with
declaración. En Python 2.5, debe agregar from __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 una with
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á de file
todos modos, por lo que actualmente la diferencia es una cuestión de estilo. Los documentos de Python recomiendan usar open
.
Al abrir un archivo, es preferible usar open () en lugar de invocar el constructor de archivos directamente.
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).
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í.
Al abrir un archivo, es preferible usar open () en lugar de invocar este constructor [file ()] directamente. El archivo es más adecuado para las pruebas de tipo (por ejemplo, escribir isinstance (f, file)
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.