Substituir uma linha em um arquivo em Python
-
Use o loop
for
junto com a funçãoreplace()
para substituir uma linha em um arquivo em Python - Crie um novo arquivo com o conteúdo atualizado e substitua o arquivo original em Python
-
Use a função
fileinput.input()
para substituir o texto em uma linha em Python -
Use o módulo
re
para substituir o texto em uma linha em Python
O manuseio de arquivos é considerado um aspecto essencial de qualquer aplicativo da web. Semelhante à maioria das linguagens de programação, Python é perfeitamente capaz de suportar o manuseio de arquivos. Ele permite que você lide com arquivos de diferentes tipos, essencialmente para realizar algumas operações básicas como ler e escrever. Ele também fornece algumas outras opções de manuseio de arquivos para operar os arquivos.
Este tutorial demonstra os diferentes métodos disponíveis para substituir uma linha em um arquivo em Python.
Para demonstrar as diferentes maneiras de substituir uma linha em um arquivo neste artigo, usaremos um arquivo de texto, motivation.txt
.
Arquivo de texto (motivation.txt
):
There are always second chances in life. Anybody can bounce back from hardships. The hardships that we face are just a test to check our will. A strong will is all it takes to bounce back from a loss.
O caminho do diretório de armazenamento deste arquivo pode ser diferente no computador do leitor; portanto, é aconselhável ajustar de acordo.
Use o loop for
junto com a função replace()
para substituir uma linha em um arquivo em Python
A função open()
é utilizada para abrir um arquivo em Python. O arquivo pode ser aberto em formato de texto ou binário, o que depende do programador. A função open()
possui vários modos, e todos eles fornecem diferentes opções de acessibilidade para abrir um arquivo.
O loop for
simples é uma maneira convencional de percorrer cada linha no arquivo de texto fornecido e encontrar a linha que queremos substituir. Em seguida, a linha desejada pode ser substituída usando a função replace()
. Tudo isso é feito no modo ler
. Finalmente, o arquivo é aberto no modo gravação
e o conteúdo substituído é gravado no arquivo fornecido.
O código a seguir usa o loop for
junto com a função replace()
.
# opening the file in read mode
file = open("motivation.txt", "r")
replacement = ""
# using the for loop
for line in file:
line = line.strip()
changes = line.replace("hardships", "situations")
replacement = replacement + changes + "\n"
file.close()
# opening the file in write mode
fout = open("motivation.txt", "w")
fout.write(replacement)
fout.close()
Crie um novo arquivo com o conteúdo atualizado e substitua o arquivo original em Python
Várias funções estão trabalhando para implementar esse processo. O conhecimento do processo de todas essas funções é necessário para executar este método com sucesso. Precisamos importar várias funções de três módulos para o código Python.
- Em primeiro lugar, precisamos importar a função
mkstemp()
do módulotempfile
. Esta função é utilizada para retornar uma tupla como uma saída junto com um caminho e um descritor de arquivo. - Em seguida, precisamos importar duas funções do módulo
shutil
. A primeira função é a funçãocopymode()
, que é utilizada para copiar os bits de permissão de uma fonte para o caminho de destino. A segunda função é a funçãomove()
, que permite a movimentação de arquivos de um lugar para outro. - Finalmente, precisamos importar a função
remove()
do móduloOS
. Esta função permite a exclusão de um caminho.
Todos esses módulos precisam ser importados para o código Python atual para executar o código sem erros. Um exemplo de código que implementa dessa maneira é o seguinte.
from tempfile import mkstemp
from shutil import move, copymode
from os import fdopen, remove
# storing the path where the file is saved on your device as a variable
path = "C:\\Users\Admin\Desktop\python\test\motivation.txt"
def replacement(filepath, hardships, situations):
# Creating a temp file
fd, abspath = mkstemp()
with fdopen(fd, "w") as file1:
with open(filepath, "r") as file0:
for line in file0:
file1.write(line.replace(hardships, situations))
copymode(filepath, abspath)
remove(filepath)
move(abspath, filepath)
replacement(path, "hardships", "situations")
Use a função fileinput.input()
para substituir o texto em uma linha em Python
O método fileinput.input()
obtém o arquivo como entrada linha por linha e é utilizado principalmente para anexar e atualizar os dados no arquivo fornecido.
Os módulos fileinput
e sys
precisam ser importados para o código Python atual para executar o código sem erros. O código a seguir usa a função fileinput.input()
para substituir o texto em uma linha em Python.
import fileinput
import sys
def replacement(file, previousw, nextw):
for line in fileinput.input(file, inplace=1):
line = line.replace(previousw, nextw)
sys.stdout.write(line)
var1 = "hardships"
var2 = "situations"
file = "motivation.txt"
replacement(file, var1, var2)
Use o módulo re
para substituir o texto em uma linha em Python
O módulo re
é um módulo embutido que o Python fornece aos programadores que lidam com expressões regulares e precisa ser importado para o código. Ele ajuda a realizar a tarefa de pesquisar um padrão em uma determinada string.
Neste método, utilizamos duas funções, nomeadamente, re.compile()
e re.escape()
, do módulo RegEx
. A função re.compile()
é utilizada para gerar um objeto de expressão regular a partir do padrão de expressão regular, que é então usado para correspondência. A função re.compile()
é utilizada para ignorar ou escapar dos caracteres especiais em Python.
O código a seguir usa várias funções do módulo Regex
para substituir o texto em uma linha em Python.
import re
def replacement(Path, text, subs, flags=0):
with open(filepath, "r+") as f1:
contents = f1.read()
pattern = re.compile(re.escape(text), flags)
contents = pattern.sub(subs, contents)
f1.seek(0)
f1.truncate()
f1.write(file_contents)
filepath = "motivation.txt"
text = "hardships"
subs = "situations"
replacement(filepath, text, subs)
Aqui, também usamos uma função sub()
para substituir o padrão fornecido por uma string ou um resultado de uma função especificada.
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.
LinkedInArtigo relacionado - Python File
- Como obter todos os arquivos de um diretório
- Como Anexar Texto a um Arquivo em Python
- Como verificar se um arquivo existe em Python
- Como encontrar ficheiros com uma certa extensão apenas em Python
- Como ler linhas específicas a partir de um arquivo em Python
- Gravar linha por linha em um arquivo usando Python