Открывает файл и возвращает представляющий его объект.
open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)
-> file
file -- Строка или байтовая строка, представляющая путь (абсолютный, либо относительный для текущей рабочей директории) к файлу, который требуется открыть. +py3.0 Либо целое, являющееся дескриптором файла (он будет закрыт при закрытии возвращаемого объекта ввода/вывода, при условии, что closefd установлен в True).

mode='r' -- Строка, обозначающая режим, в котором следует открыть файл.

buffering=-1 -- Целое. Политика буферизации. '0' — отключить буферизацию (только для двоичного режима); '1' — построчная буферизация (только для текстового режима); '> 1' — размер буфера в байтах. Если не указана, используются политика буферизации по умолчанию (см. ниже).

+py3.0 encoding=None -- Имя кодировки для кодирования/декодирования файла. Следует указывать только для текстовых файлов. Если не указана, используется системная кодировка: для определения вызывается locale.getpreferredencoding(False). При чтении и записи двоичных файлов указывать кодировку не следует. Список поддерживаемых кодировок можно найти в модуле codecs.

+py3.0 errors=None -- Строка, обозначающая режим, в котором будут обрабатываться ошибки кодирования/декодирования. Следует использовать только для текстовых файлов. В модуле codecs предопределено несколько режимов, пользовательские могут быть зарегистрированы при помощи codecs.register_error().

+py3.0 newline=None -- Строка, определяющая режим работы универсальных переводов строк. Следует использовать только для текстовых файлов. Варианты: None, пустая строка, '\n', '\r', и '\r\n'. None — при чтении потока будут использованы универсальные переводы строк ('\n', '\r' и '\r\n' будут преобразованы в '\n'); при записи — '\n' преобразуются в разделитель, используемый в системе (os.linesep). Пустая строка — при чтении также используются универсальные переводы строк, однако символы не будут преобразованы в '\n'; при записи преобразование не происходит. Другие значения — при чтении разбивка на строки осуществляется при помощи значения, преобразование не производится; при записи '\n' преобразуются в указанное значение.

+py3.0 closefd=True -- Флаг необходимости закрытия файлового дескриптора. Используется только, если в file указан дескриптор, иначе возбуждается исключение. Если False, то дескриптор будет оставлен открытым даже после закрытия файла.

+py3.0 opener=None -- Пользовательский объект, поддерживающий вызов, который следует использовать для открытия файла. Этот объект получая на входе file и flags, должен возвращать открытый дескриптор файла (возврат os.open и None при этом функционально идентичны).

Описание объектов типа file можно найти в одноимённом разделе — file.

Если файл не может быть открыт, возбуждается исключение OSError.

Внимание
+py3.4 Дескриптор создаваемого файла по умолчанию не поддерживает наследование.

На заметку
Использование оператора with позволяет не вызывать явным образом метод close().

    with open('myfile.txt', 'r+') as f:  # Открываем на чтение и запись.
f.write('0123456789') # Пишем данные в файл.

Режимы открытия файла


+py3.0 Конкретный тип, возвращаемого функцией объекта может отличаться в зависимости от режима открытия файла.

rдля чтения (+py3.0 синоним rt).
wдля записи (если файл существует, то будет очищен).
aдля добавления (на некоторых Unix-системах любая попытка записи пишет в конец файла вне зависимости от позиционирования — seek()).
bпостфикс двоичного режима (для операционных систем, которые различают текстовые и двоичные файлы).
+постфикс обновления (чтение + запись).
Uпостфикс универсальных переводов строк (-py4.0 устарел, используйте параметр newline).
t+py3.0 постфикс текстового режима.
x+py3.3 эксклюзивное создание (возбуждается исключение FileExistsError, если файл уже существует).

Примеры использования режимов:
rоткрыть текстовый файл на чтение.
r+bоткрыть двоичный файл на чтение и запись.
w+bоткрыть двоичный файл на чтение и запись, очистить до 0 байт.

Политика буферизации по умолчанию


Двоичные файлы буферизируются кусками фиксированного размера. Этот размер определяется эвристикой, пытающейся определить размер блока устройства, на котором находится файл, в случае неудачи использует io.DEFAULT_BUFFER_SIZE. Для многих систем буфер равен 4096 или 8192 байт.

«Интерактивные» текстовые файлы (для которых isatty() возвращает True) используется построчная буферизация. Другие типы текстовых файлов используют политику, применяемые для двоичных файлов, описанную выше.

Python 3


Python различает двоичный и текстовой ввод/вывод. Файлы, открытые в двоичном режиме (b) возвращают содержимое байтами, без декодирования. При использовании текстового режима (t), содержимое возвращается в виде строки, байты которой были декодированы в соответствии с настройками системы, либо параметром encoding.

.. note:: Python не обращает внимание на то, выделяет ли операционная система понятие текстовых файлов, вся обработка производится им самим, вне зависимости от системы.
Синонимы поиска: open, with open, открыть, файлы
На заметку
В разделе «События» можно узнать о надвигающихся событиях мира Python, а также поделиться своими. Если вы являетесь организатором встречи/конференции/спринта, зарегистрируйте это событие в указанном разделе, чтобы о нём узнали все желающие.