Pregunta

Cuál es la diferencia entre file y open en Python?¿Cuándo debo usar cuál?(Digamos que estoy en 2.5)

¿Fue útil?

Solución

Siempre debes usar open().

como el documentación estados:

Al abrir un archivo, es preferible usar Open () en lugar de invocar este constructor directamente.El archivo es más adecuado para el tipo de pruebas (por ejemplo, escribiendo "IsInstance (F, archivo)").

También, file() ha sido removido desde Python 3.0.

Otros consejos

Dos razones:La filosofía de Python de "Debería haber una manera de hacerlo" y file se va.

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 pasará de ser una función integrada a ser implementada por múltiples clases en el 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 deberías usar open:

f = open(filename, 'r')
for line in f:
    process(line)
f.close()

Este es un ejemplo de cuándo deberías 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 caso de uso claro para ambos.

Funcionalmente, los dos son iguales; open llamará file De todos modos, actualmente la diferencia es una cuestión de estilo.El Documentos de Python recomendar el uso open.

Al abrir un archivo, es preferible usar open() en lugar de invocar directamente el constructor del archivo.

La razón es que en futuras versiones 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 esté abriendo).

Utilice únicamente 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() ya no está disponible, así que ya no hay necesidad de preocuparse.

Lo siguiente es de los documentos de Python 2.6.[cosas entre corchetes] agregado por mí.

Al abrir un archivo, es preferible usar open() en lugar de invocar este constructor [file()] directamente.file es más adecuado para pruebas de tipo (por ejemplo, escribir isinstance(f, file)

Según el Sr. Van Rossum, aunque open() es actualmente un alias para file() deberías usar open() porque esto podría cambiar en el futuro.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top