Python – когда использовать файл или открыть

StackOverflow https://stackoverflow.com/questions/112970

  •  02-07-2019
  •  | 
  •  

Вопрос

В чем разница между file и open на питоне?Когда мне следует использовать какой из них?(Скажем, я в 2,5)

Это было полезно?

Решение

Вы всегда должны использовать open().

Как документация состояния:

При открытии файла предпочтительнее использовать Open () вместо того, чтобы вызывать этот конструктор напрямую.Файл более подходит для типа тестирования (например, написания "IsinStance (f, файл)").

Также, file() был удален начиная с Python 3.0.

Другие советы

Две причины:Философия Python: «Должен быть один способ сделать это» и file уходит.

file это фактический тип (используя, например, file('myfile.txt') вызывает его конструктор). open — это фабричная функция, которая возвращает файловый объект.

В питоне 3.0 file собирается перейти от встроенной функции к реализации несколькими классами в io библиотека (чем-то похожая на Java с буферизованными читалками и т. д.)

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)

Как видите, для существования обоих есть веская причина и четкий вариант использования для обоих.

Функционально они одинаковы; open позвоню file в любом случае, так что в настоящее время разница - это вопрос стиля.А Документы Python рекомендую использовать open.

При открытии файла предпочтительнее использовать open() вместо прямого вызова конструктора файла.

Причина в том, что в будущих версиях они не гарантированно будут такими же (open станет фабричной функцией, которая возвращает объекты разных типов в зависимости от открываемого пути).

Всегда используйте open() только для открытия файлов.file() фактически удаляется в версии 3.0 и на данный момент устарел.У них были какие-то странные отношения, но file() сейчас работает, так что больше не о чем беспокоиться.

Следующее взято из документации Python 2.6.[скобки] добавлено мной.

При открытии файла предпочтительнее использовать open() вместо прямого вызова конструктора [file()].file больше подходит для типового тестирования (например, запись isinstance(f, file)

По словам г-на Ван Россума, хотя open() в настоящее время является псевдонимом file(), вам следует использовать open(), поскольку в будущем это может измениться.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top