Примеры записи и чтения файлов в python

23 октября 2026

1. Чтение JSON-файла

import json

with open('data.json', 'r', encoding='utf-8') as f:
    data = json.load(f)          # весь JSON → Python-объект (dict/list)

print(data)
print(type(data))

 

2. Чтение текстового файла построчно

# Вариант 1 — самый pythonic (файл закрывается автоматически)
with open('input.txt', 'r', encoding='utf-8') as f:
    for line in f:
        print(repr(line))        # line содержит '\n' в конце

# Вариант 2 — без '\n' в конце строки
with open('input.txt', 'r', encoding='utf-8') as f:
    for line in f:
        line = line.rstrip('\n')
        print(repr(line))

# Вариант 3 — читаем фиксированными порциями (для очень больших файлов)
with open('input.txt', 'r', encoding='utf-8') as f:
    while chunk := f.readline():
        process(chunk)

 

3. Запись текстового файла за один раз

text = "Первая строка\nВторая строка\nТретья строка\n"

with open('output.txt', 'w', encoding='utf-8') as f:
    f.write(text)                # 'w' — перезапись, 'a' — дозапись

# Или сразу список строк:
lines = ["Первая строка\n", "Вторая строка\n", "Третья строка\n"]
with open('output.txt', 'w', encoding='utf-8') as f:
    f.writelines(lines)

 

4. Запись текстового файла построчно

lines = ["строка 1", "строка 2", "строка 3"]

with open('output.txt', 'w', encoding='utf-8') as f:
    for line in lines:
        f.write(line + '\n')     # не забываем про '\n'

# Или через print():
with open('output.txt', 'w', encoding='utf-8') as f:
    for line in lines:
        print(line, file=f)      # print добавляет '\n' сам

 

5. Запись JSON-файла

import json

data = {
    "name": "Иван",
    "age": 30,
    "skills": ["python", "sql"],
    "active": True
}

# Компактно, без отступов:
with open('out.json', 'w', encoding='utf-8') as f:
    json.dump(data, f, ensure_ascii=False)

# Красиво, с отступами (для чтения человеком):
with open('out.json', 'w', encoding='utf-8') as f:
    json.dump(data, f, ensure_ascii=False, indent=2)

# Через строку (если нужно сначала получить JSON-строку):
json_str = json.dumps(data, ensure_ascii=False, indent=2)
print(json_str)

Важно: ensure_ascii=False — чтобы русские буквы писались как есть, а не \u0418\u0432\u0430\u043d.

 

Полный мини-пример «из JSON в текст и обратно»

import json

# читаем
with open('data.json', 'r', encoding='utf-8') as f:
    users = json.load(f)          # [{"name": "...", "age": ...}, ...]

# пишем отчёт построчно
with open('report.txt', 'w', encoding='utf-8') as f:
    for u in users:
        f.write(f"{u['name']}: {u['age']}\n")

# читаем обратно
with open('report.txt', 'r', encoding='utf-8') as f:
    for line in f:
        name, age = line.rstrip('\n').split(': ')
        print(name, int(age))

 

Шпаргалка по режимам open()

Режим    Что делает
'r'    чтение (по умолчанию), ошибка если файла нет
'w'    запись, перезаписывает файл
'a'    дозапись в конец
'x'    создать, ошибка если уже существует
'rb' / 'wb'    бинарный режим (без encoding)

Всегда указывайте encoding='utf-8' — иначе на Windows по умолчанию может быть cp1251.