El uso de endswith para leer la lista de archivos no encuentra la extensión en la lista

Estoy intentando que mi script en Python lea un archivo de texto con una lista de nombres de archivo con extensiones e imprima cuando encuentre una extensión en particular (los archivos .txt sean exactos). Lee el archivo y pasa por cada línea (lo he probado poniendo una simple “línea de impresión” después de la instrucción for), pero no hace nada cuando ve “.txt” en la línea. Para evitar la pregunta obvia, sí, estoy seguro de que hay archivos .txt en la lista. ¿Alguien me puede apuntar en la dirección correcta?

with open ("file_list.txt", "r") as L: for line in L: if line.endswith(".txt"): print ("This has a .txt: " + line) 

Cada línea termina con un nuevo carácter de línea '\n' por lo que la prueba fallará correctamente. Así que debes strip la línea primero y luego probar:

 line.rstrip().endswith('.txt') # ^ 

Supongo que debe agregar el signo de final \n al final de la extensión:

 with open ("file_list.txt", "r") as L: for line in L: if line.endswith(".txt\n"): print ("This has a .txt: " + line) 

Use str.rstrip para eliminar espacios en blanco finales, como \n o \r\n .

 with open ("file_list.txt", "r") as L: for line in L: if line.rstrip().endswith(".txt"): print ("This has a .txt: " + line)