Python - Когда использовать файл по сравнению с открытым

Исключение нулевого указателя генерируется, когда приложение пытается использовать null в случае, когда требуется объект. К ним относятся:

  1. Вызов метода экземпляра объекта null.
  2. Доступ или изменение поля объекта null.
  3. Принимая длину null, как если бы это был массив.
  4. Доступ или изменение слотов null, как если бы это был массив.
  5. Бросок null как будто это было значение Throwable.

Приложения должны бросать экземпляры этого класса, чтобы указать на другие незаконные использования объекта null.

Ссылка: http://docs.oracle.com/javase/8/docs/api/java/lang/NullPointerException.html

137
задан mpen 28 March 2019 в 22:45
поделиться

6 ответов

Необходимо всегда использовать open().

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

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

кроме того, file() был удален начиная с Python 3.0.

152
ответ дан 23 November 2019 в 23:34
поделиться

file() тип, как интервал или список. open() функция для вводных файлов и возвратится file объект.

Это - пример того, когда необходимо использовать открытый:

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)

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

19
ответ дан 23 November 2019 в 23:34
поделиться

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

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

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

7
ответ дан 23 November 2019 в 23:34
поделиться

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

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

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

32
ответ дан 23 November 2019 в 23:34
поделиться

Только когда-либо используйте открытый () для вводных файлов. файл () на самом деле удаляется в 3,0, и он удерживается от использования в данный момент. У них были своего рода странные отношения, но файл () идет теперь, таким образом, нет никакой потребности больше волноваться.

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

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

4
ответ дан 23 November 2019 в 23:34
поделиться

По словам г-на Van Rossum, хотя открытый () в настоящее время псевдоним для файла () необходимо использовать открытый (), потому что это могло бы измениться в будущем.

2
ответ дан 23 November 2019 в 23:34
поделиться
Другие вопросы по тегам:

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