Python - когда использовать файл vs open
Какая разница между файлом и открытым в Python? Когда следует использовать какой? (Скажем, я в 2.5)
Ответы
Ответ 1
Вы всегда должны использовать open()
.
В качестве документация говорится:
При открытии файла предпочтительнее использовать open() вместо вызова этого конструктор напрямую. файл больше подходит для тестирования типа (например, запись "isinstance (f, file)" ).
Кроме того, file()
был удален с Python 3.0.
Ответ 2
Две причины: философия питона "Там должен быть один способ сделать это" и file
уходит.
file
- это фактический тип (используя, например, file('myfile.txt')
вызывает его конструктор). open
- это функция factory, которая вернет объект файла.
В python 3.0 file
собирается перейти от встроенного к тому, чтобы быть реализованным несколькими классами в библиотеке io
(несколько похожей на Java с буферизованными считывателями и т.д.).
Ответ 3
file()
- это тип, например int или список. open()
- это функция для открытия файлов и возвращает объект file
.
Это пример того, когда вы должны использовать open:
f = open(filename, 'r')
for line in f:
process(line)
f.close()
Это пример использования файла:
class LoggingFile(file):
def write(self, data):
sys.stderr.write("Wrote %d bytes\n" % len(data))
super(LoggingFile, self).write(data)
Как вы можете видеть, есть веская причина для существования и четкого варианта использования для обоих.
Ответ 4
Функционально, два одинаковы; open
все равно вызовет file
, так что в настоящее время разница - это вопрос стиля. Документы Python рекомендуют использовать open
.
При открытии файла предпочтительнее использовать open() вместо прямого вызова конструктора файла.
Причина в том, что в будущих версиях они не гарантируются одинаковыми (open
станет функцией factory, которая возвращает объекты разных типов в зависимости от пути, который он открывает).
Ответ 5
Использовать open() только для открытия файлов. file() на самом деле удаляется в версии 3.0, и на данный момент он устарел. У них были какие-то странные отношения, но file() теперь идет, поэтому больше не нужно беспокоиться.
Ниже приведены документы Python 2.6. [скотч] добавлен мной.
При открытии файла предпочтительнее использовать open() вместо прямого вызова этого конструктора [file()]. файл больше подходит для тестирования типа (например, запись isinstance (f, file)
Ответ 6
По словам г-на Ван Россума, хотя open() в настоящее время является псевдонимом для файла(), вы должны использовать open(), потому что это может измениться в будущем.