Відповіді:
Ви завжди повинні використовувати 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 (), оскільки це може змінитися в майбутньому.