Pergunta

Qual é a diferença entre file e open em Python? Quando devo usar qual? (Diga que eu sou em 2.5)

Foi útil?

Solução

Você deve sempre usar open().

Como afirma o :

Ao abrir um arquivo, é preferível usar open () em vez de chamar esse construtor directamente. arquivo é mais adequado a testes (por exemplo, escrita "isinstance (f, arquivo)").

Além disso, file() foi removido desde Python 3.0.

Outras dicas

Duas razões:. A filosofia python de "Deveria haver uma maneira de fazê-lo" e file está indo embora

file é do tipo real (por exemplo, usando file('myfile.txt') chama seu construtor). open é uma função de fábrica que irá retornar um objeto de arquivo.

Em Python 3.0 file vai deixar de ser um built-in de ser implementada por várias classes na biblioteca de io (algo semelhante ao Java com os leitores em buffer, etc.)

file() é um tipo, como um int ou uma lista. open() é uma função para abrir arquivos, e irá retornar um objeto file.

Este é um exemplo de quando você deve usar aberto:

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

Este é um exemplo de quando você deve usar o arquivo:

class LoggingFile(file):
    def write(self, data):
        sys.stderr.write("Wrote %d bytes\n" % len(data))
        super(LoggingFile, self).write(data)

Como você pode ver, há uma boa razão para tanto a existir, e um caso de uso claro para ambos.

Funcionalmente, os dois são a mesma coisa; open chamará file de qualquer maneira, por isso atualmente a diferença é uma questão de estilo. A Python docs recomendo usar open.

Ao abrir um arquivo, é preferível usar open () em vez de chamar o construtor arquivo diretamente.

A razão é que em versões futuras que não é garantido para ser o mesmo (open se tornará uma função de fábrica, que retorna objetos de diferentes tipos, dependendo do caminho que da abertura).

Usar exclusivamente open () para abrir arquivos. arquivo () está efectivamente a ser removido em 3,0, e é preterido no momento. Eles tiveram uma espécie de estranha relação, mas file () está indo agora, por isso não há necessidade de se preocupar mais.

O seguinte é do Python 2.6 docs. [Material suporte] adicionado por mim.

Ao abrir um arquivo, é preferível usar open () em vez de chamar esse [file ()] construtor diretamente. arquivo é mais adequado para ensaios de tipo (por exemplo, escrevendo isinstance (f, arquivo)

De acordo com o Sr. Van Rossum, embora open () é atualmente um alias para file () você deve usar open (), porque esta mudança poderia no futuro.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top