Функция open () и метод os.open () и дериваты для файлов

Во время создания файла у нас есть два выбора: использовать функцию open () или использовать метод модуля вы, соглашаясь в с os.open (). После у нас есть Ваши дериваты, как write, close, read; и то же самое с модулем вы; os.write, os.read...

Какое различие есть между обоими методами? Читая официальную документацию он говорит, что os.open () и Ваши дериваты - для низкого уровня, но действительно делают то же самое.

2
задан 23.12.2016, 03:58
1 ответ

Первое, из-за того, что является немного более точные, os.open, os.read и os.write это не методы, это функции в пакете os (видеть комментарий @ChemaCortes ниже).

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

open он возвращает тебе объект, который располагает методами, которые позволяют манипулировать объектом. Эти методы будут одними или другими в зависимости от способа, который ты используешь, чтобы открывать файл (чтение, написание...).

os.open тебе возвращает file описывающий и ты будешь управляющим в том, чтобы знать то, что ты открыл, как ты это открыл и как ты должен манипулировать этим (какие функции ты сможешь использовать на том же самом).

В общем, ты был бы должен использовать всегда open.

2
ответ дан 24.11.2019, 11:54
  • 1
    Я не хотел бы polemizar, но он правилен говорить о open, read и write как mé все mó dulo os. После того, как импортировали mó dulo создается закрытие , где определяют эти mé все, сходный в как instaciarí в класс. В самом деле, создаются столько инстанций mó dulo как субпроцессы есть. – ChemaCortes 23.12.2016, 11:56
  • 2
    Он не polé слюда, он discusió n и знание. Если я делаю следующее оба, print s возвращают мне True: import os, types; print(isinstance(os.open, types.BuiltinFunctionType)); print(isinstance(os.open, types.BuiltinMethodType)). Следовательно должен будь быть có mo ты говоришь. Я изменил ответ. – kikocorreoso 23.12.2016, 12:21

Теги

Похожие вопросы