Saltar al contenido

Programa de Python para eliminar una línea específica en un archivo de texto

Solución:

Tu problema es que lines[5] voluntad siempre ser igual a line6. Nunca modificó la sexta línea en lines, asi que line6 y lines[5] siguen siendo iguales. Por lo tanto, la condición lines[5] != line6 siempre fallará.

Si desea eliminar siempre la sexta línea de su archivo, puede usar enumerate. Por ejemplo:

with open("file.txt", "r") as infile:
    lines = infile.readlines()

with open("file.txt", "w") as outfile:
    for pos, line in enumerate(lines):
        if pos != 5:
            outfile.write(line)

El error real en su forma de hacer esto ya fue señalado, pero en lugar de comparar el contenido de cada línea, le recomiendo que simplemente compare el número de línea o use startswith. De lo contrario, está haciendo muchas comparaciones de cadenas innecesarias, lo que puede ser costoso.

Otras mejoras podrían ser manejar su archivo usando with, abriendo el archivo solo una vez y permitiendo eliminar varias líneas a la vez.

# 'r+' allows you to read and write to a file
with open("test.txt", "r+") as f:
    # First read the file line by line
    lines = f.readlines()

    # Go back at the start of the file
    f.seek(0)

    # Filter out and rewrite lines
    for line in lines:
        if not line.startswith('dy'):
            f.write(line)

    # Truncate the remaining of the file
    f.truncate()

Debe verificar su lógica y los nombres de las variables. Estás comprobando si las líneas[5] no es igual a line6, cada vez en su bucle. Lo cual es, porque ES esa línea exacta. Quieres comprobar la línea actual:

if t == "dy":
    f = open("C:/Users/Sreeraj/Desktop/Thailand_Rectangle2_National Parks.txt","w")
    for line in lines:
        if line != line6: # <- Check actual line!
            f.write(line)

f.close()
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *