В этой статье мы рассмотрим, как добавить контент в существующий файл с помощью Python.
Допустим, у нас есть файл helloworld.txt, содержащий текст «Hello world!» и он находится в нашем текущем рабочем каталоге в файловой системе Unix:
$ cat ./helloworld.txt
Hello world!
Теперь предположим, что мы хотим добавить дополнительный текст «Хорошо, что родился!» в конец этого файла из программы Python.
Первый шаг - получить ссылку на файл из нашей программы. Это можно
сделать с помощью встроенного open
, используя путь / имя файла в
качестве первого аргумента и режим в качестве второго аргумента, как
показано ниже:
f = open("./helloworld.txt", "a")
Переменная f
теперь содержит ссылку на файловый объект, который мы
можем использовать для записи в конец файла. Если файл еще не
существует, он будет создан. Обратите внимание, что второй аргумент «a»
указывает режим открытия файла, в данном случае режим «Добавить». Это
устанавливает позицию записи в конец файла.
Если бы мы использовали «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!
И последнее замечание: если мы добавим «+» к аргументу режима 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 на уровне кода.