Как заменить строку в файле python
In this article, we will learn how we can replace text in a file using python.
Method 1: Searching and replacing text without using any external module
Let see how we can search and replace text in a text file. First, we create a text file in which we want to search and replace text. Let this file be SampleFile.txt with the following contents:
To replace text in a file we are going to open the file in read-only using the open() function. Then we will t=read and replace the content in the text file using the read() and replace() functions.
- file : Location of the file
- mode : Mode in which you want toopen the file.
Then we will open the same file in write mode to write the replaced content.
Python3
Output:
Method 2: Searching and replacing text using the pathlib2 module
Let see how we can search and replace text using the pathlib2 module. First, we create a Text file in which we want to search and replace text. Let this file be SampleFile.txt with the following contents:
Install pathlib2 module using the below command:
This module offers classes representing filesystem paths with semantics appropriate for different operating systems. To replace the text using pathlib2 module we will use the Path method of pathlib2 module.
- file: Location of the file you want to open
In the below code we are replacing “dummy” with “replaced” in our text file. using the pathlib2 module.
Заменить строку в файле с помощью Python

Работа с файлами — важный аспект любого веб-приложения. Python, как и другие языки программирования, поддерживает обработку файлов. Это позволяет программистам иметь дело с файлами и, по сути, выполнять некоторые базовые операции, такие как чтение, запись и некоторые другие параметры обработки файлов для работы с файлами.
Функцию open() можно использовать для открытия файла в программе Python. Файл можно открыть в текстовом или двоичном режиме, который выбирает пользователь. Функция open() имеет несколько режимов, каждый из которых обеспечивает различные варианты доступа к открываемому файлу.
Термин String в Python можно описать как набор символов Unicode, заключенных в одинарные или двойные кавычки. Строки могут содержаться внутри текстовых файлов, которые должны открываться в коде Python.
В этом руководстве будут рассмотрены различные методы замены строки в файле на Python.
Используйте функцию replace() , когда входные и выходные файлы различаются
Метод replace() в Python используется для поиска подстроки и замены ее другой подстрокой.
Функция replace() имеет три параметра, а именно newvalue , oldvalue и count . И oldvalue , и newvalue являются обязательными значениями, и предоставление функции с параметром count необязательно.
В следующем коде используется функция replace() для замены строки в Python, когда входные и выходные файлы различаются.
В выводе приведенного выше кода строка gode в файле будет заменена словом God .
В приведенном выше коде мы одновременно работаем с двумя разными файлами: f1.txt и f2.txt . f1.txt открывается в режиме чтения текста rt и ссылается на end . f2.txt открывается в режиме записи текста wt и ссылается на fout . Затем цикл for повторяется, и при каждом появлении в файле строки gode она заменяется словом God . Затем оба файла закрываются после необходимых операций с помощью функции close() .
Используйте функцию replace() , когда для ввода и вывода используется только один файл
В этом методе один и тот же файл используется как для ввода, так и для вывода.
Здесь мы используем оператор with вместе с функцией replace() . Менеджер контекста with выполняет фундаментальную функцию: делает программу короче и читабельнее.
Когда мы используем оператор with с обработкой файлов, файл, который мы открыли в коде Python, не нужно закрывать вручную; он автоматически закрывается после завершения блока with .
Следующий код использует функцию replace() для замены строки в Python, когда входной и выходной файл совпадают.
Следующий код принимает file1 как входной и выходной файл. Сначала файл открывается в режиме чтения текста rt , а содержимое файла считывается и сохраняется в переменной. Затем файл закрывается и открывается снова, но уже в режиме записи текста wt . Строка заменяется, и данные записываются в этом режиме, а затем файл закрывается.
Vaibhhav is an IT professional who has a strong-hold in Python programming and various projects under his belt. He has an eagerness to discover new things and is a quick learner.
Как заменить строчку в .txt файле через python 3?
В файле есть определенная строка, ее сначала выводит цикл на экран, всю строку, а потом нужно бы ее изменить, т.е. удалить старое и написать на ней новое, как это делается?
Замену можно сделать так:
Открыть файл на чтение можно либо так
Преимущество второго способа в том, что вам не надо закрывать файл вручную. Конструкция with сделает это за вас после закрытия её блока.
Перезаписать файл можно же таким образом:
Но так как вы хотите писать файл с заменой строки, то вам нужно воспользоваться перебором по readlines() и либо регулярными выражениями, либо сравнением текущей строки с той, которую вы ищите (если у вас есть искомая строка, конечно) и её заменой.
Грубо говоря, вы можете сделать это как-то так:
Также могут помочь функции startswith() и endswith() , если у вас есть только начало или конец от искомой строки. И помните про регистр!
Также можно не перебирать строки, а обратиться к строке по индексу, если вам известно какой у неё номер, и заменить её содержание.
И можно воспользоваться функцией replace() , как уже написал автор второго ответа, что сократит количество кода, но заменит абсолютно все вхождения. Чтобы этого избежать, при вызове функции можно указать максимальное число совершаемых замен: S.max(sub_in_str, to_change_str, max) .
Также учитывайте, что replace() совершит замену даже если строка частично совпадает. То есть выполнив это:
Мы получим Thwas was a simple example
Если длина новой строки не совпадает с длиной старой, то придётся переписать весь файл (начиная со строчки, которую вы хотите заменить) даже если вам надо заменить только одну строку в файле (за редкими исключениями). Связанный вопрос: Запись текстовой строки по нужному индексу в файл на языке Си?
Чтобы в случае ошибки сохранить оригинал или для больших файлов (когда всё содержимое в памяти не помещается), может использоваться временный файл куда новое содержимое пишется и в конце в случае успеха он переименовывается в исходное имя файла. Похожий подход использует стандартный модуль fileinput : исходный файл переименовывается (чтобы из него читать текущее содержимое), а стандартный вывод перенаправляется в указанный файл (простой print печатает прямо в файл):
Можно самостоятельно явно временный файл создать:
Отличие в том, что оригинальное содержимое хранится в .bak файле в fileinput подходе, а в коде с NamedTemporaryFile исходный файл заменяется только в случае успеха (в отсутствие исключений).
Небольшой файл можно в память целиком загрузить, чтобы получить список строк, изменить нужные и целиком перезаписать этот файл, рискуя потерять данные, если ошибка возникнет при записи (аналогично коду в @stxdtm ответе):
Подробнее представленные подходы можно по ссылкам в похожем ответе посмотреть.
Если длина новой строки совпадает с длиной старой (в байтах), то можно прямо по месту изменения делать, не переписывая другие части файла, к примеру, используя mmap модуль, который позволяет файл рассматривать и как файл ( .readline() , etc), и как байтовую строку ( .find() , можно применять регулярные выражения). Связанный вопрос: Python — How can I change bytes in a file.
Python – How to Replace String in File?
To replace a string in File using Python, follow these steps:
- Open input file in read mode and handle it in text mode.
- Open output file in write mode and handle it in text mode.
- For each line read from input file, replace the string and write to output file.
- Close both input and output files.
Example 1: Replace string in File
In the following example, we will replace the string pyton with python in data.txt file, and write the result to out.txt .
Python Program
What have we done here?
- Open data.txt in read text rt mode and get the reference to fin .
- Open out.txt in write text wt mode and get the reference to fout .
- for line in fin :for each line in fin i.e., data.txt , line.replace() : replaces string pyton with python and fout.write : writes to out.txt .
- fin.close() : closes the file referenced by fin , fout.close() : closes the file referenced by fout .
Input File
Output File
The string pyton in the file is replaced with the string python .
Example 2: Replace string in the same File
In the following example, we will replace the string pyton with python in data.txt file, and overwrite the data.txt file with the replaced text.
Python Prgoram
What have we done here?
- Open file data.txt in read text mode rt .
- fin.read() reads whole text in data.txt to the variable data .
- data.replace() replaces all the occurrences of pyton with python in the whole text.
- fin.close() closes the input file data.txt .
- In the last three lines, we are opening data.txt in write text wt mode and writing the data to data.txt in replace mode. Finally closing the file data.txt .
Input File
The same input file after program execution.
Summary
In this tutorial of Python Examples, we learned to replace a string with other in file, with help of well detailed examples.