Работа с файлами
Открытие файлов
# Режимы: 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-строки