Как дописать в файл python
Перейти к содержимому

Как дописать в файл python

  • автор:

Запись в файл Python. Перезапись файла Python

Высокоуровневый язык Python 3 имеет множество полезных средств, позволяющих взаимодействовать с текстовыми файлами. Вы можете как создавать документы для хранения информации, так и выполнять чтение, запись и удаление данных.

Сегодня поговорим о создании и записи файлов.

Создание файла, его открытие и закрытие

Работа с текстовым файлом в Python начинается с момента вызова функции open. Она принимает в качестве атрибутов путь к объекту на ПК и режим обработки. Вы можете указать абсолютный путь (это адрес размещения на жёстком диске) или относительный (речь идёт о координатах относительно папки проекта).

Что касается режима обработки файла, то при его выборе учитывайте его назначение («r» — для чтения, «w» — для записи). Таблица ниже позволит вам ознакомиться с режимами доступа к файлу в Python:

1-20219-89defb.png

А вот пример простейшего взаимодействия с текстовым документом:

 
file = open("otus.txt", "w") file.write("hello world") file.close()

Здесь функция open принимает относительный путь, открывая его для записи. При этом, если в папке файл otus.txt будет отсутствовать, метод open создает его автоматически, после чего откроет для него нужный режим обработки.

Метод close закрывает файл, а это необходимо сделать, выполнив нужные вам действия с переменной file (иначе потеряете информацию). Впрочем, можно обойтись и без close, используя связку операторов with as (переменная, которая ссылается на файл, должна быть прописана после конструкции):

 
with open("otus.txt", "w") as file: file.write("hello world")

Метод write() для записи в файл в Python

В предыдущих примерах мы уже использовали метод write() . Он позволяет записывать любую строку в открытый файл. Помните, что строки в Python способны содержать не только текст, но и двоичные данные.

Запись в файл построчно выполняется посредством записи нужной вам строки с последующей записью \n — символа перевода строки.

Давайте ещё раз посмотрим на запись в файл с помощью метода write(). Синтаксис:

 
my_file.write(string);
 
my_file = open("otus.txt", "w") my_file.write("Люблю Python!\nЭто крутой язык!") my_file.close()

Код, представленный выше, создаст файл otus.txt , записав в него указанную строку.

Давайте теперь выполним запись списка поэлементно, где каждый элемент списка будет записан в новой строке:

 
lines = ["one", "two", "three"] with open(r"C:\otus.txt", "w") as file: for line in lines: file.write(line + '\n')

Этот код позволит создать небольшой массив lines, содержащий три строковых элемента: «one», «two» и «three». Благодаря функции open и связке операторов with as произойдёт открытие текстового файла otus.txt в корневом каталоге жёсткого диска C. Далее произойдёт запись всех элементов списка с помощью write. Символ \n обеспечит, чтобы каждая запись была выполнена с новой строки.

Как дописывать в файл?

Как дописывать файл
Всем привет. Подскажите пожалуйста, мне нужно переменную постоянно дописывать новой строкой в.

Как дописывать строки в файл? (не получается)
Делаю так: Dim fso, f Set fso = CreateObject('Scripting.FileSystemObject') TFile =.

Как дописывать данные программы в файл?
Ребят подскажите пожалуйста! 1) Как указать путь к програмульке? 2) Как сделать чтобы файл не.

Как дописывать в файл с новой строки?
<?php error_reporting(-1); header('Content-Type: text/html; charset= utf-8'); function.

Регистрация: 03.01.2009
Сообщений: 42

Лучший ответ

Сообщение было отмечено Рыжий Лис как решение

Решение

f = open('file.txt' , 'a') #дозапись в файл

'a' открытие на дозапись, информация добавляется в конец файла.
Регистрация: 01.03.2013
Сообщений: 68

ЦитатаСообщение от yanita Посмотреть сообщение

f = open('file.txt' , 'a') #дозапись в файл

'a' открытие на дозапись, информация добавляется в конец файла.
4527 / 3521 / 358
Регистрация: 12.03.2013
Сообщений: 6,038
Регистрация: 01.04.2017
Сообщений: 118
Не в ту ветку ответил
Регистрация: 12.05.2019
Сообщений: 1

А что писать после f = open("блаблабла", "a")?
Типо, f.write и т.п?

Добавлено через 7 минут
А, понял. Write.

87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
Помогаю со студенческими работами здесь

Как не перезаписывать файл целиком, а дописывать изменения
Всем привет , хочу сохранить значения из textbox в текстовичок , пока что додумался только до этого.

[РЕШЕНО] Как дописывать строки в файл в FatFS?
устройство на Stm32 использую fatfs чена. Если использую f_puts добавляется строка, но то что было.

Командный файл: дописывать в файл текст, удалять строки
Разработать командный файл, который в интерактивном режиме (командный файл «задает вопросы», а.

Запись в текстовый файл - не хочет дописывать строки
В чем ошибка? Указывает на "rewrite" procedure TForm1.Button1Click(Sender: TObject); begin .

Дописывать в файл текст, удалять строки из файла
Разработать программу, которая в интерактивном режиме могла бы дописывать в файл текст, удалять.

Классы С++, работа с файлами. Дописывать каждый раз в файл информацию и выводить её
В моём случае выводится текущий массив, результат примера и предыдущий вводимый массив и результат.

Дописывать в файл текст, удалять строки из файла и распечатывать его содержимое
Доброго времени суток, имеется такая задача : . Разработать командный файл, который в интерактивном.

Добавление информации в файл в Python, не перезаписывая его

Существует распространенная задача при работе с файлами в Python — добавление новой информации в существующий файл не перезаписывая его. Обычно, когда открывается файл на запись с помощью функции open() , все существующее содержимое файла удаляется.

Например, если есть файл с именем example.txt , который содержит строку «Hello, World!», и применить к нему следующий код:

file = open('example.txt', 'w') file.write('Python rules!') file.close()

После выполнения этого кода, содержимое файла example.txt будет заменено на «Python rules!», и первоначальная строка «Hello, World!» будет утеряна.

Все это происходит из-за того, что режим 'w' в функции open() стирает все содержимое файла перед записью новых данных. Если кто-то хочет добавить информацию в файл, не удаляя существующие данные, нужно использовать режим 'a' , который открывает файл на дозапись (append).

Вернемся к примеру выше и изменим его, используя режим 'a' :

file = open('example.txt', 'a') file.write(' Python rules!') file.close()

Теперь, после выполнения этого кода, в файле example.txt будет следующее содержимое: «Hello, World! Python rules!» Старая информация («Hello, World!») осталась на месте, а новая (» Python rules!») была добавлена в конец файла.

Таким образом, использование режима 'a' при открытии файла позволяет дополнять его новой информацией, не теряя уже существующей.

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

Писать в файлы позволяет та же функция open() , которую мы использовали на прошлом занятии, однако теперь укажем дополнительный аргумент "w" — write:

>>> with open("referats.txt", "w", encoding="utf-8") as f: # файл открыт . # Записываем строку в файл, "\n" - символ переноса строки . f.write("Используются тексты с Яндекс.Рефератов https://yandex.ru/referats/\n") . # Запишем в файл еще одну строку . f.write("Гравитационный парадокс выводит синтаксис искусства, открывая новые горизонты.\n") 

Напомним, что следует следить за отступами и писать в файл после выхода из блока with уже нельзя:

>>> with open("function.txt", "w", encoding="utf-8") as f: . f.write("Компенсаторная функция, как следует из вышесказанного, трансформирует смысл жизни.\n") >>> if not f.writable: . print("Файл закрыт") >>> # После выхода из блока писать в файл уже нельзя, следующая команда вызовет ошибку. Как всегда следите за отступами! >>> f.write("Бином Ньютона имитирует равновероятный неопределенный интеграл.\n") 

Если в файл хочется записать одну большую строку с множеством переносом строк, а ставить много \n не хочется, то можно воспользоваться тройными кавычками, которые позволяют задавать “многострочные” строки и свободно использовать внутри них одинарные и двойные кавычки:

>>> text = """Альтиметр редуцирует лазерный ньютонометр. Как отмечает А.А.Потебня, . "строфоид" начинает период. Необходимым и достаточным условием отрицательности . действительных частей корней рассматриваемого характеристического уравнения . является то, что гироскопический прибор преобразует цикл. Действительно, . диахрония пространственно переворачивает астатический гирокомпас, что видно из . уравнения кинетической энергии ротора. Погрешность изготовления неумеренно . определяет резкий кинетический момент. Слово, несмотря на некоторую . погрешность, поступательно диссонирует подвес. Апостроф' порождает неопределенность. . """ >>> with open("multiline.txt", "w", encoding="utf-8") as f: . f.write(text) 

Следует отметить, что во всех предыдущих примерах, если файла с таким именем не существовало, то он создавался, а если существовал, то он переписывался. Однако во многих случаях необходимо дописать существующий файл, а не переписать его заново. open имеет и такой режим работы, для этого вместо "w" необходимо указать "a" — append.

>>> text = """Экситон не входит своими составляющими, что очевидно, . в силы нормальных реакций связей, так же как и межатомный ПИГ, . составляя уравнения Эйлера для этой системы координат. . """ >>> # Создаем новый файл >>> with open("physics.txt", "w", encoding="utf-8") as f: . f.write(text) >>> >>> # Теперь файл закрыт. Перепишем его >>> >>> # Стираем старый файл, создаем новый с тем же именем и открываем его для записи: >>> with open("physics.txt", "w", encoding="utf-8") as f: . f.write("При погружении в жидкий кислород фотон искажает разрыв.\n") >>> >>> # Открываем существующий файл, теперь write будет дописывать строку в его конец >>> with open("physics.txt", "a", encoding="utf-8") as f: . f.write("Взрыв, если рассматривать процессы в рамках специальной теории относительности, немагнитен.\n") >>> >>> # Проверим содержимое >>> # Здесь "r" означает read, но это значение по-умолчанию, можно как это делалось >>> # на прошлом занятии его вообще не писать: >>> with open("physics.txt", "r", encoding="utf-8") as f: . first_line = f.readline() # читаем первыую строку . # Проверяем, что строка начинается с данной подстроки: . if first_line.startswith("При погружении в жидкий"): . print("От экситона не осталось и следа") . second_line = f.readline().strip() # читаем вторую строку и отрезаем ей \n . if second_line.endswith("теории относительности, немагнитен."): . print("Относительность относительна") 

Чтение файлов построчно

Иногда бывает такое, что файлы очень большие и прочитать их целиком совсем никак не получается. Что, если вам нужно прочитать файл на 16 миллиардов строк, который весит десятки терабайт?

Да что там 16 миллиардов. Студенты порой жалуются, что на экзамене файл весит 50МБ и их программы долго его читают. Это не от того, что файл большой. Просто читают неправильно.

Какое здесь может быть решение? Очевидно, надо читать построчно. Но как?

У объекта, который возвращает функция open() есть много методов. В том числе метод .readlines() . По названию понятно, что делает этот метод - читает строки. Однако, в нашей задаче этот метод никак не поможет. Разберемся почему:

>>> file = open('borodino.txt') >>> lines = file.readlines() >>> print(type(lines)) >>> print(lines[:5]) >>> file.close() class 'list'> ['БОРОДИНО\n', ' Скажи-ка, дядя, ведь не даром\n', 'Москва, спаленная пожаром,\n', 'Французу отдана?\n', 'Ведь были ж схватки боевые,\n'] 

Как мы видим, метод readlines() создает список строк всего файла. То есть тоже читает файл целиком.

Как же правильно прочитать построчно?

>>> with open('borodino.txt') as file: . i = 0 . for line in file: . print(line, end='') . i += 1 . if i >= 5: . break БОРОДИНО  Скажи-ка, дядя, ведь не даром Москва, спаленная пожаром, Французу отдана? Ведь были ж схватки боевые, 

При таком способе чтения python не будет считывать файл целиком, а будет считать построчно. То есть при чтении какого-угодно файла одновременно мы будем читать только одну строку. И 16 терабайт пройдут незаметно.

Домашнее задание

Для каждого варианта своё задание.

  1. Программа должна спрашивать у пользователя слова до тех пор, пока он не введёт пустое слово. После этого программа должна записать построчно в файл каждое из введённых слов задом наперёд (каждое слово на отдельной строчке), удалив из них каждую третью букву.
  2. Программа должна спрашивать у пользователя слова до тех пор, пока он не введёт пустое слово. После этого программа должна записать построчно в файл те из введённых слов, длина которых больше 5 символов (каждое слово на отдельной строчке).
  3. Программа должна спрашивать у пользователя слова до тех пор, пока он не введёт пустое слово. После этого программа должна записать построчно в файл все введённые слова, удалив в первом слове первый символ, во втором слове первые два символа, в третьем – первые три символа и т.д. (каждое слово на отдельной строчке).
  4. Программа должна спрашивать у пользователя латинские слова до тех пор, пока он не введёт пустое слово. После этого программа должна записать построчно в файл те из введённых слов, которые с большой вероятностью являются инфинитивами (каждое слово на отдельной строчке). [Словами типа esse можно не заморачиваться, но пассивный инфинитив надо учесть.]
  5. Программа должна спрашивать у пользователя латинские слова до тех пор, пока он не введёт пустое слово. После этого программа должна записать построчно в файл те из введённых слов, которые с большой вероятностью являются формой 3-го лица пассива настоящего времени (каждое слово на отдельной строчке). [Нерегулярными словами можно не заморачиваться.]
  6. Программа должна получить от пользователя подряд 7 чисел, а после этого записать в файл 7 строчек, состоящих из соответствующего числа букв X (на первой строчке количество иксов равно первому введённому числу, на второй – второму и т. д.; если введённое число отрицательно, иксов на этой строчке быть не должно). В задаче обязательно пользоваться списком, а не 7 переменными!
  7. Программа должна получить от пользователя подряд 8 слов, а после этого записать в файл 4 строчки с попарными склейками этих слов: на 1-й строчке – склеенные слова 1 и 2, на второй – 3 и 4 и т. д. В задаче обязательно пользоваться списком, а не 8 переменными!

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *