Рубрики
Без рубрики

Python: Добавление содержимого в файл

Автор оригинала: Jacob Stopak.

В этой статье мы рассмотрим, как добавить содержимое к существующему файлу с помощью Python.

Допустим, у нас есть файл под названием helloworld.txt содержит текст “Hello world!”, и он находится в нашем текущем рабочем каталоге в файловой системе Unix:

$ cat ./helloworld.txt
Hello world!

Теперь предположим, что мы хотим добавить дополнительный текст “Хорошо родиться!” в конец этого файла из программы Python.

Первым шагом является получение ссылки на файл из нашей программы. Это можно сделать с помощью встроенного метода open , используя путь/имя файла в качестве первого аргумента и режим в качестве второго аргумента следующим образом:

f = open("./helloworld.txt", "a")

Переменная f теперь содержит ссылку на файловый объект, который мы можем использовать для записи в конец файла. Если файл еще не существовал, он будет создан. Обратите внимание, что второй аргумент “а” указывает режим открытия файла, в данном случае режим “Добавить”. Это устанавливает позицию записи в конец файла.

Если бы мы использовали “w” (режим записи), то все, что мы записываем в файл, будет начинаться с самого начала и перезаписывать существующее содержимое.

Теперь мы можем записать содержимое в файл следующим образом:

f.write("\nIt's good to have been born!")

f.close()

Не забудьте вызвать метод close после записи в файлы, чтобы он не оставался заблокированным после выхода программы и чтобы гарантировать, что любое буферизованное содержимое в памяти будет записано в файл.

Вот как выглядит файл после того, как мы его добавим:

$ cat ./helloworld.txt
Hello world!
It's good to have been born!

Последнее замечание заключается в том, что если мы добавим “+” к аргументу mode метода open , то сможем открыть файл как для добавления , так и для чтения. Это позволит как читать, так и записывать данные в файл. Без “+” исключение IOError возникнет, если мы попытаемся прочитать из файла. По умолчанию и чтение, и запись будут происходить в конце файла, но это можно изменить в любое время с помощью метода seek .

Вот команды для достижения этой цели (обратите внимание, что мы используем метод flush , чтобы гарантировать, что новое содержимое будет записано в файл, прежде чем мы попытаемся прочитать его обратно):

f = open("./helloworld.txt", "a+")
f.write("I am grateful.")
f.flush() 
f.seek(0)
content = f.read()
print content
f.close()

А вот как выглядит окончательный файл:

$ cat ./helloworld.txt
Hello world!
It's good to have been born!
I am grateful.

Об авторе

Эта статья была написана Джейкобом Стопаком, консультантом по программному обеспечению и разработчиком, страстно желавшим помочь другим улучшить свою жизнь с помощью кода. Иаков-создатель Initial Commit – сайт, посвященный тому, чтобы помочь любознательным разработчикам узнать, как кодируются их любимые программы. Его избранный проект помогает людям изучать Git на уровне кода.