Справочник Python

Полное руководство по языку на русском

Работа с файлами

Открытие файлов

# Режимы: r (чтение), w (запись), a (добавление)
# r+ (чтение+запись), w+ (чтение+запись с очисткой)

# Явное закрытие (старый стиль)
file = open("data.txt", "r", encoding="utf-8")  # открытие файла
data = file.read()  # присваивание
file.close()

# Контекстный менеджер (рекомендуется)
with open("data.txt", "r", encoding="utf-8") as f:  # контекстный менеджер
    data = f.read()  # присваивание

Чтение файлов

with open("data.txt", encoding="utf-8") as f:  # контекстный менеджер
    content = f.read()  # присваивание
    lines = f.readlines()  # присваивание
    line = f.readline()  # присваивание

# Итерация по строкам (эффективно для больших файлов)
with open("data.txt", encoding="utf-8") as f:  # контекстный менеджер
    for line in f:  # цикл по элементам
        print(line.strip())  # вывод в консоль

Запись файлов

with open("output.txt", "w", encoding="utf-8") as f:  # контекстный менеджер
    f.write("Строка 1\n")
    f.write("Строка 2\n")

# Дозапись
with open("output.txt", "a", encoding="utf-8") as f:  # контекстный менеджер
    f.write("Строка 3\n")

# Список строк
lines = ["a", "b", "c"]  # инициализация списка
with open("output.txt", "w") as f:  # контекстный менеджер
    f.writelines(line + "\n" for line in lines)

pathlib — современный подход

from pathlib import Path  # импорт модуля

path = Path("data") / "subdir" / "file.txt"  # создание объекта пути

# Создание/проверка
path.exists()         # True/False
path.is_file()        # True/False
path.is_dir()         # True/False
path.mkdir(parents=True, exist_ok=True)  # создание директории

# Чтение/запись
content = path.read_text(encoding="utf-8")  # чтение текстового файла
path.write_text("Новый текст", encoding="utf-8")  # запись текстового файла
data = path.read_bytes()  # присваивание

# Работа с путями
path.name              # 'file.txt'
path.stem              # 'file'
path.suffix            # '.txt'
path.parent            # Path('data/subdir')
path.absolute()  # полный путь

# Список файлов
for f in Path(".").iterdir():  # цикл по элементам
    print(f.name)  # вывод в консоль

for py in Path(".").glob("*.py"):  # цикл по элементам
    print(py)  # вывод в консоль

for all_py in Path(".").rglob("*.py"):  # цикл по элементам
    print(all_py)  # вывод в консоль

CSV

import csv  # импорт модуля для работы с CSV

# Чтение
with open("data.csv", newline="", encoding="utf-8") as f:  # контекстный менеджер
    reader = csv.reader(f)  # чтение CSV
    for row in reader:  # цикл по элементам
        print(row)  # вывод в консоль

# Чтение в словари
with open("data.csv", newline="", encoding="utf-8") as f:  # контекстный менеджер
    reader = csv.DictReader(f)  # чтение CSV в словари
    for row in reader:  # цикл по элементам
        print(row["name"], row["age"])  # вывод в консоль

# Запись
with open("output.csv", "w", newline="", encoding="utf-8") as f:  # контекстный менеджер
    writer = csv.writer(f)  # запись CSV
    writer.writerow(["name", "age"])
    writer.writerow(["Анна", 30])

# Запись словарей
with open("output.csv", "w", newline="", encoding="utf-8") as f:  # контекстный менеджер
    writer = csv.DictWriter(f, fieldnames=["name", "age"])  # запись CSV из словарей
    writer.writeheader()
    writer.writerow({"name": "Анна", "age": 30})

JSON

import json  # импорт модуля для работы с JSON

data = {"name": "Анна", "age": 30, "hobbies": ["чтение", "бег"]}  # инициализация словаря

# Запись
with open("data.json", "w", encoding="utf-8") as f:  # контекстный менеджер
    json.dump(data, f, ensure_ascii=False, indent=2)  # запись JSON в файл

# Чтение
with open("data.json", encoding="utf-8") as f:  # контекстный менеджер
    loaded = json.load(f)  # чтение JSON из файла

# В строку
json_str = json.dumps(data, ensure_ascii=False, indent=2)  # сериализация в JSON-строку
data_again = json.loads(json_str)  # десериализация из JSON-строки