
Работа с текстовыми файлами в Python строится вокруг встроенной функции open(), которая позволяет не только читать данные, но и создавать новые файлы. При вызове open(«имя_файла.txt», «w») создаётся пустой файл с расширением .txt, если он отсутствует в каталоге. Режим «w» перезапишет содержимое существующего файла, а режим «a» добавит текст в конец.
Для записи текста используется метод write(), принимающий строку. Например: f.write(«Привет, Python!»). Если требуется заносить сразу несколько строк, удобно применять метод writelines(), который принимает список строк. Каждую строку нужно завершать символом переноса \n, иначе текст будет записан в одну строку.
После завершения работы файл необходимо закрыть методом close(). Альтернативный подход – использовать конструкцию with open(…) as f:, которая автоматически закрывает файл. Такой способ снижает риск ошибок, связанных с утечкой ресурсов.
Создание текстового файла в Python можно объединить с обработкой данных: результат вычислений, ввод пользователя или содержимое списка легко сохраняется в отдельный документ. Это позволяет формировать отчёты, хранить логи или экспортировать данные для последующего анализа.
Открытие нового txt файла с помощью функции open()
Функция open() принимает минимум два аргумента: имя файла и режим работы. Для создания нового текстового файла чаще всего используется режим 'w' или 'x'. Режим 'w' создаёт файл, если он отсутствует, и перезаписывает существующий. Режим 'x' подходит, если требуется избежать перезаписи: при наличии файла будет вызвано исключение FileExistsError.
Пример открытия файла для записи:
f = open("data.txt", "w", encoding="utf-8")
f.write("Новая строка")
f.close()
Чтобы файл закрывался автоматически, удобнее применять конструкцию with:
with open("data.txt", "w", encoding="utf-8") as f:
f.write("Текстовый файл создан")
При работе с кириллическими символами рекомендуется явно указывать encoding="utf-8", чтобы избежать проблем с кодировкой на разных системах.
Запись строки текста в файл методом write()

Метод write() записывает в файл строку, переданную в качестве аргумента. Если файл открыт в текстовом режиме ('w', 'a' или 'x'), данные должны быть строками. Для записи байтов требуется бинарный режим ('wb', 'ab').
Пример:
with open("example.txt", "w", encoding="utf-8") as f:
f.write("Первая строка текста\n")
f.write("Вторая строка")
Метод возвращает количество записанных символов, что удобно для проверки корректности операции:
with open("log.txt", "w", encoding="utf-8") as f:
count = f.write("Данные для журнала")
print(count) # количество символов
При использовании режима 'w' содержимое файла полностью перезаписывается. Чтобы добавлять новые строки без удаления старых, используйте режим 'a'. Для корректного переноса строк добавляйте \n вручную.
Добавление данных в существующий файл с режимом «a»

Режим «a» открывает файл для записи в конец без удаления уже сохранённой информации. Если файл отсутствует, он будет создан автоматически.
Пример кода:
with open("data.txt", "a", encoding="utf-8") as f:
f.write("Новая строка\n")
При каждом вызове write() курсор перемещается в конец, и новые данные добавляются после существующих. Если необходимо записывать несколько строк подряд, можно использовать writelines() с передачей списка строк.
Чтобы избежать дублирования, перед добавлением полезно проверять содержимое файла через режим «r». Для больших объёмов данных предпочтительно объединять операции записи в одну сессию, так как многократное открытие файла замедляет выполнение.
Использование метода writelines() для списка строк
Метод writelines() записывает в файл сразу несколько строк, переданных в виде списка или любого итерируемого объекта. В отличие от write(), он не добавляет символ перехода на новую строку автоматически, поэтому их нужно включать вручную.
Пример записи списка строк в файл:
lines = ["Первая строка\n", "Вторая строка\n", "Третья строка\n"]
with open("output.txt", "w", encoding="utf-8") as f:
f.writelines(lines)
Рекомендации при использовании:
- Всегда добавляйте
\nв конце каждой строки, если требуется перенос. - Для записи больших объёмов данных используйте генераторы или списковые выражения, чтобы избежать промежуточных структур.
- Указывайте
encoding, если текст содержит кириллицу или другие национальные символы.
Пример генерации строк и записи без явного списка:
with open("numbers.txt", "w", encoding="utf-8") as f:
f.writelines(f"Число: {i}\n" for i in range(1, 6))
Запись данных с переносами строк

Для записи текста с переходом на новую строку используется символ \n. Важно указывать его вручную, так как метод write() не добавляет перевод строки автоматически.
Пример:
with open("output.txt", "w", encoding="utf-8") as f:
f.write("Первая строка\n")
f.write("Вторая строка\n")
f.write("Третья строка")
После выполнения кода в файле будут три строки. Последняя запись не завершается переводом, поэтому следующая операция write() продолжит текст в той же строке. Если требуется строгая структура, завершающий символ \n лучше указывать всегда.
Альтернатива – использовать writelines() с заранее подготовленным списком:
lines = ["Строка 1\n", "Строка 2\n", "Строка 3\n"]
with open("output.txt", "w", encoding="utf-8") as f:
f.writelines(lines)
В этом случае каждый элемент списка должен содержать символ перевода строки, иначе все данные окажутся в одной строке.
Проверка существования файла перед созданием

Перед созданием текстового файла важно убедиться, что файл с заданным именем не существует. Это предотвращает случайную перезапись данных.
Использование модуля os:
import os
filename = "data.txt"
if not os.path.exists(filename):
with open(filename, "w") as f:
f.write("Содержимое файла")
else:
print(f"Файл {filename} уже существует")
Функция os.path.exists() возвращает True, если файл или папка присутствует в указанной директории.
Использование библиотеки pathlib:
from pathlib import Path
file_path = Path("data.txt")
if not file_path.is_file():
file_path.write_text("Содержимое файла")
else:
print(f"Файл {file_path} уже существует")
Path.is_file()проверяет существование файла, исключая директории.write_text()создает файл и записывает текст за одну операцию.- Проверка необходима при автоматизированной генерации файлов или работе с важными данными.
Систематическая проверка предотвращает потерю информации и упрощает контроль версий файлов.
Чтение созданного файла для проверки результата

После создания txt-файла важно убедиться, что данные записаны корректно. Для этого используется функция open() с режимом чтения 'r'. Пример: with open('example.txt', 'r', encoding='utf-8') as file:. Такой подход автоматически закроет файл после завершения операций.
Чтобы получить весь текст целиком, применяют метод read(): content = file.read(). Для построчного чтения используют readlines(), который возвращает список строк: lines = file.readlines(). Этот метод удобен для анализа или обработки каждой строки отдельно.
Для проверки корректности записанных данных можно вывести содержимое на экран: print(content) или итерировать через строки: for line in lines: print(line.strip()). Метод strip() удаляет лишние символы переноса строки.
Если файл содержит специфические символы, рекомендуется явно указывать кодировку при открытии, например encoding='utf-8' или encoding='cp1251', чтобы избежать ошибок при чтении.
Для больших файлов стоит читать их по частям, используя цикл: for line in file:, что экономит память и ускоряет обработку.
Вопрос-ответ:
Как создать новый текстовый файл в Python и записать в него текст?
Для создания нового текстового файла в Python используется функция open(). Необходимо указать имя файла и режим работы. Например, open(‘example.txt’, ‘w’) откроет файл для записи. Если файл не существует, он будет создан. После открытия можно использовать метод write() для добавления текста в файл. После завершения работы с файлом нужно закрыть его методом close().
Можно ли добавлять текст в существующий файл, не стирая его содержимое?
Да, для этого используют режим ‘a’ (append) при открытии файла: open(‘example.txt’, ‘a’). В этом режиме новые данные добавляются в конец файла, сохраняя предыдущие строки. Это удобно, когда нужно постоянно дополнять файл новыми строками без потери старой информации.
