Reemplazar una línea en un archivo en Python

Vaibhhav Khetarpal 30 enero 2023
  1. Utilice el bucle for junto con la función replace() para reemplazar una línea en un archivo en Python
  2. Cree un nuevo archivo con el contenido actualizado y reemplace el archivo original en Python
  3. Utilice la función fileinput.input() para reemplazar el texto en una línea en Python
  4. Utilice el módulo re para reemplazar el texto en una línea en Python
Reemplazar una línea en un archivo en Python

El manejo de archivos se considera un aspecto esencial de cualquier aplicación web. Al igual que la mayoría de los lenguajes de programación, Python es perfectamente capaz de admitir el manejo de archivos. Le permite tratar con archivos de diferentes tipos, esencialmente para realizar algunas operaciones básicas como leer y escribir. También proporciona algunas otras opciones de manejo de archivos para operar los archivos.

Este tutorial demuestra los diferentes métodos disponibles para reemplazar una línea en un archivo en Python.

Para demostrar las diferentes formas de reemplazar una línea en un archivo en este artículo, tomaremos un archivo de texto, motivación.txt.

Archivo de texto (motivación.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.

La ruta del directorio de almacenamiento de este archivo puede ser diferente en la computadora del lector; por lo tanto, se recomienda realizar los ajustes necesarios.

Utilice el bucle for junto con la función replace() para reemplazar una línea en un archivo en Python

La función open() se utiliza para abrir un archivo en Python. El archivo se puede abrir en formato de texto o binario, que depende del programador. La función open() tiene varios modos, y todos proporcionan diferentes opciones de accesibilidad para abrir un archivo.

el bucle simple for es una forma convencional de recorrer cada línea en el archivo de texto dado y encontrar la línea que queremos reemplazar. Luego, la línea deseada se puede reemplazar usando la función replace(). Todo esto se hace en modo lectura. Finalmente, el archivo se abre en el modo escritura y el contenido reemplazado se escribe en el archivo dado.

El siguiente código usa el bucle for junto con la función 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()

Cree un nuevo archivo con el contenido actualizado y reemplace el archivo original en Python

Varias funciones están trabajando para implementar este proceso. El conocimiento del proceso de todas estas funciones es necesario para ejecutar este método con éxito. Necesitamos importar varias funciones de tres módulos al código Python.

  • En primer lugar, necesitamos importar la función mkstemp() del módulo tempfile. Esta función se utiliza para devolver una tupla como salida junto con una ruta y un descriptor de archivo.
  • Entonces, necesitamos importar dos funciones del módulo shutil. La primera función es la función copymode(), que se utiliza para copiar los bits de permiso de una fuente a la ruta de destino. La segunda función es la función move(), que permite el movimiento de archivos de un lugar a otro.
  • Finalmente, necesitamos importar la función remove() del módulo OS. Esta función permite borrar una ruta.

Todos estos módulos deben importarse al código Python actual para ejecutar el código sin errores. Un código de ejemplo que se implementa de esta manera es el siguiente.

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")

Utilice la función fileinput.input() para reemplazar el texto en una línea en Python

El método fileinput.input() obtiene el archivo como entrada línea por línea y se utiliza principalmente para agregar y actualizar los datos en el archivo dado.

Los módulos fileinput y sys deben importarse al código Python actual para ejecutar el código sin errores. El siguiente código usa la función fileinput.input() para reemplazar el texto en una línea en 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)

Utilice el módulo re para reemplazar el texto en una línea en Python

El módulo re es un módulo incorporado que Python proporciona a los programadores que se ocupan de la expresión regular, y debe importarse al código. Ayuda a realizar la tarea de buscar un patrón en una determinada cadena.

En este método, usamos dos funciones, a saber, re.compile() y re.escape(), del módulo RegEx. La función re.compile() se utiliza para generar un objeto de expresión regular a partir del patrón de expresión regular, que luego se usa para hacer coincidir. La función re.compile() se utiliza para ignorar o escapar de los caracteres especiales en Python.

El siguiente código usa varias funciones del módulo Regex para reemplazar el texto en una línea en 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)

Aquí, también usamos una función sub() para reemplazar el patrón dado con una cadena o el resultado de una función específica.

Vaibhhav Khetarpal avatar Vaibhhav Khetarpal avatar

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.

LinkedIn

Artículo relacionado - Python File