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.