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