Добавить содержимое в файл в Python
В этом посте мы обсудим, как добавить текст в конец файла в Python.
1. Использование open() функция
Стандартный подход — открыть файл в режиме добавления ( ‘a’ ) со встроенным open() функцию, а затем использовать write() функция для записи в него текста. Текст добавляется в конец файла, так как поток всегда располагается в конце файла в ‘a’ режим. Вот как будет выглядеть код:
with open ( ‘file.txt’ , ‘a’ ) as f :
f . write ( ‘Thank you.\n’ )
Если файл не существует, он создается с помощью ‘a’ режим. Кроме того, если вам нужно прочитать текст из файла, используйте ‘a+’ режим. Это позволяет вам искать назад и читать, но последующие записи в файл все равно будут заканчиваться в конце файла.
Добавить строку в конец файла
5. Дана строка s и текстовый файл. Добавить строку s в конец файла.
Добавлено через 1 час 35 минут
1 2 3
s=input('введите строку ') name=input("Введите имя файлу") f=open(name,'a')
у меня дальше не получается, я не понимаю как именно S должна выводится
Лучшие ответы ( 1 )
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Ответы с готовыми решениями:
Дана строка S и текстовый файл.Добавить строку S в конец файла
Дана строка S и текстовый файл.Добавить строку S в конец файла.
Дана строка S и текстовый файл. Добавить строку S в конец файла.(Питон)
Дана строка S и текстовый файл. Добавить строку S в конец файла.(Питон)
Добавить строку в конец массива в цикле
Есть массив большого размера. Задача пройти по массиву окном и создать пачки как на рисунке.
Как добавить в конец многомерного списка строку через append?
Здравствуйте , подскажите как добавить в конец списка строку , нужно добавить ip адрес и.

Добавить в конец символьного файла символы e,n,d
Дан символьный файл f. Добавить в его конец символы e,n,d (если это необходимо, использовать.
Am I evil? Yes, I am!
![]()
![]()
16120 / 9755 / 2731
Регистрация: 21.10.2017
Сообщений: 21,624

Сообщение было отмечено Надиня как решение
Решение
with open('in.txt', 'a') as f_in: f_in.write(input())
Как дозаписать файл в python
Я делаю телеграм-бота, и мне нужно записывать сообщения пользователя в файл txt. Но обычный метод .write() перезаписывает его, а мне это не нужно. Как дозаписать файл в python?
Отслеживать
задан 14 сен 2020 в 15:49
35 1 1 золотой знак 1 1 серебряный знак 5 5 бронзовых знаков
используйте open(filename, mode=»a») .
14 сен 2020 в 16:01
with open(‘file.txt’, ‘r+’) as f: f.seek(0, 2) f.write(‘blabla’) а там где f.seek 0 это номер буквы, а 2 строка? Или наоборот?
3 ноя 2021 в 8:54
2 ответа 2
Сортировка: Сброс на вариант по умолчанию
Вы можете открыть файл в режиме добавления open(‘. ‘, ‘a’) и использовать привычный .write() . В этом случае запись будет осуществляться в конец.
А вообще запись в файл и чтение из него производятся в позиции некоего «курсора». Каждое действие над содержимым файла перемещает этот курсор. И если файл открыт в режиме «чтение и обновление» ( ‘r+’ ), то можно переместить курсор в конец файла с помощью метода .seek() и записать что-то всё тем же .write() . Код, дописывающий строку в конце файла, будет выглядеть как-то так:
with open('file.txt', 'r+') as f: # . f.seek(0, 2) # перемещение курсора в конец файла f.write('blabla') # собственно, запись
Про метод seek можно почитать тут.
Как в существующий файл дописать текст в python?
у меня есть txt файл в котором есть такой текст:
dakdasjlkas:dsadsakj54fsf
dakdasjlkas:dsadsakj54fsf
adsdasjlkas:dsadsakj545sf
как мне дописать в конец каждой стрки какой-то текст?
я пробовал вот-так но этот флаг дописывает на новых строках 🙁
for i in range(3): with open('1.txt', 'a') as file: file.write('input')
- Вопрос задан более двух лет назад
- 1678 просмотров
Комментировать
Решения вопроса 1
text = 'input' # фраза, которая будет дописана в конец строки output = '' # инициализация результирующего текста with open('1.txt', 'r') as file: for line in file: # считывание текущего файла output += (line.replace('\n', '') + text + '\n') with open('1.txt', 'w') as file: file.write(output) # перезапись файла
Ответ написан более двух лет назад

Решение простое, но не очень хорошее если файл большой. Многократная конкатенация строк хорошо память отъедает.
Davidd2008 @Davidd2008 Автор вопроса
Vindicar, спасибо. Хотел реализовать программу с помощью f-строки, но не смог из-за синтаксической ошибки:
SyntaxError: f-string expression part cannot include a backslash

Михаил,
Раз уж ты читаешь файл целиком в память, можно было использовать список строк, и сделать ».join() (ну или ‘\n’.join()). Я думаю, это будет побыстрее.

Vindicar, да в этой ситуации, можно просто использовать метод read(), чтоб получить весь текст, и просто ко всему тексту применить replace(‘\n’, text+’\n’) (так, как у него там есть какие-то строки, значит они с переносами, а раз так, значит каждая строка заканчивается на символ переноса, по этому мы можем просто использовать replace для всего текста), и обратно записать получившийся.

MinTnt, это вариант, но я вообще-то имел ввиду несколько другой аспект.
Когда ты дописываешь что-то в конец строки, что делает питон?
Выделяет память под новую строку (суммарной длины), потом копирует туда исходную строку, потом копирует туда дописываемую часть. Если исходная строка более не нужна, удаляет её. (это упрощение, но идею передаёт).
И так при каждом дописывании. Т.е. если ты к 100МБ строке дописываешь один символ, у тебя в какой-то момент будет занято два раза по 100МБ, а если дописываешь символы часто — то память будет постоянно выделяться/освобождаться.
А вот join() работает умнее. Если он может пройтись по списку строк, он это делает, суммирует их длины, выделяет блок нужного размера, и вторым проходом записывает содержимое в этот блок. Никаких многократных переносов, по крайней мере для списка строк.
Понятно, что на маленьких строках это не принципиально, но файлы имеют тенденцию разрастаться. поэтому в некоторых случаях может иметь смысл сразу использовать более эффективные инструменты. Просто на всякий пожарный.
Ответы на вопрос 2

В конец каждой строки — никак. Сам подумай, в файле никаких строк нет, это последовательность байт. Просто некоторые программы эту последовательность разбивают на участки по символу перевода строки.
Так что чтобы вставить что-то в середину файла, пришлось бы сместить вперёд всё содержимое файла после этого места.
Проще сделать иначе: создать новый файл рядом со старым, прочитать построчно старый, записать изменённые строки в новый. А потом удалить старый и переименовать новый в старый.
Насчёт последней части посмотри модуль os, в частности, os.unlink() и os.rename().
Ответ написан более двух лет назад
Комментировать
Нравится 1 Комментировать

Дмитрий @LazyTalent
Data Engineer, Freelancer
1. Прочесть файл
2. Пройтись по всем строкам и дописать значение
3. Сохранить новые данные в новый файл
