open
Открывает файл и возвращает представляющий его объект.
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 при этом функционально идентичны).
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.0 Конкретный тип, возвращаемого функцией объекта может отличаться в зависимости от режима открытия файла.
Примеры использования режимов:
Двоичные файлы буферизируются кусками фиксированного размера. Этот размер определяется эвристикой, пытающейся определить размер блока устройства, на котором находится файл, в случае неудачи использует
«Интерактивные» текстовые файлы (для которых isatty() возвращает
Python различает двоичный и текстовой ввод/вывод. Файлы, открытые в двоичном режиме (
.. note:: Python не обращает внимание на то, выделяет ли операционная система понятие текстовых файлов, вся обработка производится им самим, вне зависимости от системы.
Если файл не может быть открыт, возбуждается исключение 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, открыть, файлы
В разделе «Встроенные функции»:
abs
all
any
apply
ascii
bin
callable
chr
classmethod
cmp
compile
delattr
dir
divmod
enumerate
eval
exec
filter
format
getattr
globals
hasattr
hash
help
hex
id
input
isinstance
issubclass
iter
len
locals
map
max
min
next
oct
ord
pow
print
raw_input
reduce
repr
reversed
round
setattr
sorted
staticmethod
sum
super
unichr
vars
zip
На заметку
В разделе «События» можно узнать о надвигающихся событиях мира Python, а также поделиться своими. Если вы являетесь организатором встречи/конференции/спринта, зарегистрируйте это событие в указанном разделе, чтобы о нём узнали все желающие.