Eliminar línea del archivo en Python

Vaibhhav Khetarpal 10 octubre 2023
  1. Use el número de línea para eliminar una línea específica de un archivo en Python
  2. Eliminar la primera o la última línea de un archivo en Python
  3. Eliminar una línea que coincida con un texto en particular dado
  4. Eliminar una línea que coincida con una palabra en particular dada
  5. Eliminar la línea más corta en el archivo dado en Python
  6. Eliminar todas las líneas de un archivo particular dado en Python
Eliminar línea del archivo en Python

Python admite y permite el manejo de archivos de datos, y forma una parte esencial del lenguaje de programación Python. Sin embargo, no hay funciones directas en Python que puedan eliminar una línea específica en un archivo determinado.

Este tutorial demuestra las diferentes formas disponibles para eliminar una línea específica de un archivo en Python.

Esta tarea de eliminar una línea específica se puede implementar con la ayuda de varios enfoques diferentes.

Use el número de línea para eliminar una línea específica de un archivo en Python

Método 1

Este método, como se especificó anteriormente, utiliza el número de línea especificado por el usuario para eliminar una línea de un archivo en particular en Python.

Hace uso del bucle for, el método readlines() y el método enumerate().

Tomemos un archivo de ejemplo, llamado test.txt, cuyo contenido se detalla a continuación.

Hello
My name is
Adam
I am
a 
good
singer
cricketer dancer

El siguiente código usa los métodos enumerate() y readlines() para eliminar una línea de un archivo en particular en Python.

l1 = []
with open("temp.txt", "r") as fp:
    l1 = fp.readlines()
with open("temp.txt", "w") as fp:
    for number, line in enumerate(l1):
        if number not in [4, 6]:
            fp.write(line)

El código anterior hace los siguientes cambios:

Hello
My name is
Adam
I am
good
cricketer dancer

Explicación del código:

  1. En primer lugar, se abre el archivo en modo lectura.
  2. El contenido del archivo dado se lee en una lista con la ayuda de la función readlines().
  3. A continuación, se cierra el archivo.
  4. El archivo se vuelve a abrir, pero esta vez en el modo escribir.
  5. Luego, se implementa un bucle for y la función enumerate() a la lista creada.
  6. La condición if se utiliza para comprobar y seleccionar el número de línea. El número de línea mencionado se elimina.
  7. A continuación, se cierra el archivo.

Método 2

El método seek() también se puede utilizar para implementar la misma tarea de eliminar una línea de un archivo usando un número de línea. Trabajaremos en el mismo archivo, test.txt, como se mencionó en el método anterior.

Al utilizar el método seek(), no necesitamos abrir el mismo archivo dos veces, haciéndolo más fácil y rápido.

El siguiente código usa el método seek() para eliminar una línea de un archivo en particular en Python.

with open("temp.txt", "r+") as fp:
    lines = fp.readlines()
    fp.seek(0)
    fp.truncate()
    for number, line in enumerate(lines):
        if number not in [4, 6]:
            fp.write(line)

El código anterior hace los siguientes cambios:

Hello
My name is
Adam
I am
good
cricketer dancer

Explicación del código:

  1. El archivo se abre en el modo r+, que permite tanto la capacidad de lectura como la de escritura.
  2. El contenido del archivo se lee en una lista con la ayuda de la función readlines().
  3. A continuación, se utiliza el método seek() para mover el puntero de nuevo al punto de inicio de la lista.
  4. A continuación, el archivo se trunca con la ayuda del método truncate().
  5. Luego, se implementa un bucle for y la función enumerate() a la lista creada.
  6. La condición if se utiliza para comprobar y seleccionar el número de línea. El número de línea mencionado se elimina.
  7. El archivo está cerrado.

Eliminar la primera o la última línea de un archivo en Python

Para implementar este método, utilizamos el corte de listas mientras escribimos el contenido del archivo en una lista.

Por ejemplo, eliminaremos la primera línea del mismo archivo mencionado anteriormente (test.txt).

El siguiente código elimina la primera línea de un archivo dado en Python.

with open("temp.txt", "r+") as fp:
    lines = fp.readlines()
    fp.seek(0)
    fp.truncate()
    fp.writelines(lines[1:])

El código anterior realiza los siguientes cambios y proporciona el siguiente resultado:

My name is
Adam
I am
a 
good
singer
cricketer dancer

Explicación del código:

  1. El archivo se abre en el modo r+, que permite tanto la capacidad de lectura como la de escritura.
  2. El contenido del archivo se lee en una lista con la ayuda de la función readlines().
  3. A continuación, se utiliza el método seek() para mover el puntero de nuevo al punto de inicio de la lista.
  4. A continuación, el archivo se trunca con la ayuda del método truncate().
  5. Todas las líneas del archivo se escriben en una lista con la excepción de la primera línea. Esto es posible gracias a la segmentación de listas.

Eliminar una línea que coincida con un texto en particular dado

Este método se puede utilizar cuando hay varias líneas que contienen un texto específico. Las líneas que coincidan con el texto dado se pueden eliminar.

Por ejemplo, eliminaremos una línea que coincida con un texto en particular del mismo archivo (test.txt) que se utiliza en los métodos anteriores.

Este método utiliza la función strip() y la función write() para implementar la tarea de eliminar una línea que contiene un texto determinado.

El siguiente código elimina una línea que coincide con una cadena determinada en Python.

content = "cricketer dancer"
with open("temp.txt", "w") as fp:
    lines = fp.readlines()
    for line in lines:
        if line.strip("\n") != content:
            file.write(line)

El código anterior realiza los siguientes cambios y proporciona el siguiente resultado:

Hello
My name is
Adam
I am
a 
good
singer

Eliminar una línea que coincida con una palabra en particular dada

De manera similar a eliminar una línea haciendo coincidir la cadena completa, también podemos intentar encontrar una palabra que pueda estar contenida en una línea y luego eliminar esa línea en particular.

Por ejemplo, eliminaremos una línea que coincida con una determinada palabra del mismo archivo (test.txt) que se utiliza en los métodos anteriores.

Para este método, utilizamos el módulo os que proporciona Python. También creamos otro archivo nuevo y escribimos los datos en él para implementar esta tarea.

El siguiente código elimina una línea que coincide con una determinada palabra en Python.

import os

with open("temp.txt", "r") as input:
    with open("bb.txt", "w") as output:
        for line in input:
            if "cricketer" not in line.strip("\n"):
                output.write(line)
os.replace("bb.txt", "temp.txt")

El código anterior realiza los siguientes cambios y proporciona el siguiente resultado:

Hello
My name is
Adam
I am
a 
good
singer

Eliminar la línea más corta en el archivo dado en Python

Como sugiere su nombre, este método encuentra y elimina la línea más corta del archivo dado. Aquí, haremos uso del método len() para implementar esta tarea.

Por ejemplo, eliminaremos la línea más corta del mismo archivo (test.txt) utilizada en los métodos anteriores.

El siguiente código elimina la línea más corta en el archivo dado en Python.

with open("temp.txt", "r") as rf:
    lines = rf.readlines()
shortest = 1000
lineToDelete = ""
for line in lines:
    if len(line) < shortest:
        shortest = len(line)
        lineToDelete = line
with open("temp.txt", "w") as write_file:
    for line in lines:
        if line == lineToDelete:
            pass
        else:
            write_file.write(line)

Eliminar todas las líneas de un archivo particular dado en Python

Para borrar todas las líneas de un archivo en particular en Python, podemos usar la función truncate(). Además, el puntero del archivo vuelve al inicio del archivo.

El siguiente código elimina todas las líneas de un archivo en particular dado en Python.

with open("temp.txt", "r") as fp:
    fp.truncate()
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