Автор оригинала: 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 на уровне кода.