Відповіді:
Ви завжди повинні використовувати open()
.
Як зазначено в документації :
Під час відкриття файлу бажано використовувати open (), а не викликати цей конструктор безпосередньо. Файл більше підходить для тестування типів (наприклад, написання "isin substance (f, file)").
Також file()
було видалено з Python 3.0.
Дві причини: Філософія пітона "Має бути один спосіб зробити це" і file
відходить.
file
є фактичним типом (використовуючи, наприклад file('myfile.txt')
, викликає його конструктор). open
- це заводська функція, яка повертає файловий об’єкт.
У python 3.0 file
перейде від вбудованого до впровадженого кількома класами в io
бібліотеці (дещо схожий на Java з буферизованими читачами тощо)
file()
це тип, як int або list. 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)
Як бачимо, для обох існує вагома причина, і для обох чіткий приклад використання.
with
заявою. with open(filename, 'r') as f: \ for line in f: \ process(line)
. Це дозволяє уникнути явного закриття. Python 2.6 і вище споконвічно підтримують це with
твердження. У Python 2.5 ви повинні додати from __future__ import with_statement
верхню частину коду.
file
клас був обладнаний спеціальними методами, які автоматично викликаються щоразу, коли файл відкривається через with
оператор. Ці спеціальні методи забезпечують належне та безпечне відкриття та закриття файлу.
Функціонально два однакові; open
зателефонуємо file
все одно, тому наразі різниця - це питання стилю. Документи Python рекомендують використовувати open
.
Під час відкриття файлу бажано використовувати open (), а не викликати конструктор файлів безпосередньо.
Причина полягає в тому, що в майбутніх версіях вони не гарантуються однаковими ( open
стануть заводською функцією, яка повертає об'єкти різних типів залежно від шляху, який він відкриває).
Використовуйте open () лише для відкриття файлів. Файл () фактично видаляється в 3.0, і він наразі застарілий. У них були якісь дивні стосунки, але файл () зараз триває, тому більше не потрібно хвилюватися.
Далі йдеться з документів Python 2.6. [дужка речі] додана мною.
Під час відкриття файлу бажано використовувати open (), а не викликати цей конструктор [file ()] безпосередньо. файл більше підходить для тестування типів (наприклад, написання речовини (f, файл)
За словами пана Ван Россума, хоча open () в даний час є псевдонімом для файлу (), ви повинні використовувати open (), оскільки це може змінитися в майбутньому.