Python
Как создать файл в Python: open, pathlib и запись текста
Создать файл в Python можно через встроенную функцию open() в режиме записи или через модуль pathlib. Для обычного текстового файла достаточно открыть файл в режиме w, записать строку и закрыть файл. Лучше делать это через with, чтобы Python сам корректно закрыл файл после записи
Самый простой пример
with open("notes.txt", "w", encoding="utf-8") as file:
file.write("Привет, Python")
После запуска рядом с вашим скриптом появится файл notes.txt с текстом Привет, Python
Что означает режим w
Режим w означает write, то есть запись. Если файла нет, Python создаст его. Если файл уже есть, Python перезапишет его содержимое
with open("result.txt", "w", encoding="utf-8") as file:
file.write("Первая строка\n")
file.write("Вторая строка\n")
Важный момент: если result.txt уже существовал, старый текст внутри будет удален. Поэтому режим w подходит, когда вы точно хотите создать файл заново или полностью заменить его содержимое
Как дописать текст в существующий файл
Если нужно не перезаписать файл, а добавить текст в конец, используйте режим a
with open("notes.txt", "a", encoding="utf-8") as file:
file.write("Новая заметка\n")
Режим a означает append. Если файла нет, он будет создан. Если файл есть, новый текст добавится в конец
Как создать файл только если его еще нет
Иногда нужно защититься от случайной перезаписи. Для этого есть режим x
with open("report.txt", "x", encoding="utf-8") as file:
file.write("Новый отчет")
Если report.txt уже существует, Python выдаст ошибку FileExistsError. Это удобно, когда нельзя случайно стереть старые данные
Создание файла через pathlib
Современный способ работы с путями — модуль pathlib
from pathlib import Path
path = Path("notes.txt")
path.write_text("Привет из pathlib", encoding="utf-8")
write_text() создает файл, если его нет, и записывает текст. Если файл уже существует, содержимое будет заменено
Для чтения можно использовать read_text()
from pathlib import Path
path = Path("notes.txt")
text = path.read_text(encoding="utf-8")
print(text)
pathlib особенно удобен, когда нужно собирать пути к папкам и файлам без ручной склейки строк
Где появится файл
Если указать только имя файла, например notes.txt, файл создастся в текущей рабочей папке. Это не всегда та папка, где лежит скрипт. Рабочая папка зависит от того, откуда вы запустили команду
Проверьте текущую папку так
from pathlib import Path
print(Path.cwd())
Если файл «пропал», скорее всего, он создан не там, где вы ожидали
Как создать файл в конкретной папке
from pathlib import Path
folder = Path("data")
folder.mkdir(exist_ok=True)
path = folder / "notes.txt"
path.write_text("Файл внутри папки data", encoding="utf-8")
mkdir(exist_ok=True) создает папку data, если ее нет. Если папка уже есть, ошибки не будет
Оператор / у Path собирает путь аккуратно для вашей операционной системы
Как записать несколько строк
lines = [
"Первая строка",
"Вторая строка",
"Третья строка"
]
with open("lines.txt", "w", encoding="utf-8") as file:
for line in lines:
file.write(line + "\n")
Важно добавлять \n, если каждая строка должна начинаться с новой строки. write() не добавляет перенос автоматически
Как записать числа
write() принимает строку. Если нужно записать число, преобразуйте его через str() или f-строку
score = 95
with open("score.txt", "w", encoding="utf-8") as file:
file.write(f"Результат: {score}\n")
Если передать число напрямую, будет ошибка TypeError
Мини-практика
Создайте файл todo.txt и запишите в него три задачи
tasks = ["выучить open", "попробовать pathlib", "прочитать файл обратно"]
with open("todo.txt", "w", encoding="utf-8") as file:
for task in tasks:
file.write(task + "\n")
После запуска откройте файл в редакторе и проверьте содержимое. Затем измените режим w на a и добавьте еще одну задачу
Частые ошибки
Файл создается не в той папке
Проверьте Path.cwd(). Файл создается в текущей рабочей папке, а не обязательно рядом со скриптом
Забыть encoding=»utf-8″
На русскоязычном тексте лучше явно указывать кодировку, чтобы не ловить проблемы на разных системах
Использовать режим w и случайно стереть файл
Режим w перезаписывает файл. Для добавления используйте a, для защиты от перезаписи — x
Пытаться записать число без str
file.write() принимает строку. Числа нужно преобразовывать
Что почитать дальше по Python
Если нужен общий маршрут по теме, откройте рубрику Python. Для соседних задач пригодятся эти разборы:
- Как открыть файл с помощью Python: open, pathlib и чтение текста
- Как открыть файл в Python: open(), with, чтение текста и частые ошибки
- Как запустить программу на Python: файл .py, терминал, CMD и VS Code
- Как менять цвет текста в Python: ANSI-коды и colorama