Python Glossary English

все Python 3Файлы и I/Oфункция

open()

открытие

Открывает файл. Режимы: r (чтение), w (запись, перезапись), a (добавление), x (создание), b (бинарный). Используй with.

Синтаксис

open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)

Всегда указывай encoding='utf-8' явно: без него до Python 3.15 текстовый режим берёт кодировку из локали системы (utf-8 — только в UTF-8 Mode, -X utf8; с 3.15 этот режим включён по умолчанию, PEP 686), и файл, который спокойно читается на Linux, роняет UnicodeDecodeError на Windows с cp1251. Режим 'w' обрезает файл до нуля уже в момент открытия, до первой записи, — если нужно создать файл, но не затереть существующий, бери 'x': он бросит FileExistsError вместо потери данных.

Примеры

# Запись и чтение текстового файла
with open('demo.txt', 'w', encoding='utf-8') as f:
    f.write('Hello, World!')
with open('demo.txt', 'r', encoding='utf-8') as f:
    print(f.read())  # → Hello, World!
# Добавление к файлу: режим 'a' пишет в конец
with open('demo.txt', 'w', encoding='utf-8') as f:
    f.write('Hello, World!')
with open('demo.txt', 'a', encoding='utf-8') as f:
    f.write('\nSecond line')
with open('demo.txt', encoding='utf-8') as f:
    print([line.strip() for line in f])  # → ['Hello, World!', 'Second line']
# Бинарный режим
with open('demo.bin', 'wb') as f:
    f.write(bytes([0, 1, 2, 3]))
with open('demo.bin', 'rb') as f:
    print(f.read())  # → b'\x00\x01\x02\x03'
# Режим 'x' — только создать: если файл уже есть, FileExistsError
with open('new.txt', 'x', encoding='utf-8') as f:
    f.write('new')
try:
    open('new.txt', 'x')
except FileExistsError:
    print('файл уже есть')  # → файл уже есть
# encoding='utf-8' обязателен для портируемости: без него кодировка
# берётся из локали ОС, и файл с другой машины прочитается иначе
from pathlib import Path
path = Path('demo.txt')
path.write_text('Привет', encoding='utf-8')
with path.open('r', encoding='utf-8') as f:
    print(f.readline())  # → Привет

См. также

Частые ошибки

Открыть в полном глоссарииdocs.python.orgСообщить о неточности