Najlepsza odpowiedź
Ponieważ jest głupi. Nie mogę wymyślić użytecznego zastosowania tej „ funkcji ” i bardzo się starałem.
(Zobacz odpowiedź Romaina na poważne podejście do „dlaczego dokładnie”, po prostu potrzebuję płomienia 🙂 Mogę jednak zapewnić pewne obejścia)
Dlaczego nie akceptuje jeszcze jednego parametru (tj. „kończący”, który jest domyślny na „\ n” lub flagę bool, keepnl = True), tak żebym mógł zachować / zmienić zakończenie linii, jeśli i tylko wtedy, gdy go potrzebuję, wykracza poza moje zrozumienie.
To nieintuicyjna „decyzja dotycząca zasad” sprawia, że jest ona praktycznie bezużyteczna i zamiast powolnej i trudnej do zrozumienia:
 lines = [ ln[:-1] for ln in f.readlines() ] 
Zwykle wolę
 lines = f.read().split("\n") 
O wiele prostsze dla moich oczu. Myślę, że jest już za późno, aby to zmienić.
Tak, istnieje możliwość innych zakończeń linii, w zależności od systemu operacyjnego.
Myślę, że nawet standardowe biblioteki Pythona mają swoje wady też.
Odpowiedź
Te znaki to nie dodatki. Są obecne w pliku tekstowym. Oznaczają końce wierszy.
 Oto inny sposób czytania pliku tekstowego, o nazwie sample.txt, który ilustruje. 
 >>> with open("sample.txt") as sample: 
 ... contents = sample.readlines() 
 ... print(contents) 
 ...  
 ["This is line number 1\n", "This is line number 2\n", "This is line number 3\n", "This is line number 4\n", "This is line number 5\n", "This is line number 6\n", "This is line number 7\n", "This is line number 8\n", "This is line number 9\n", "This is line number 10\n", "This is line number 11\n", "This is line number 12\n", "This is line number 13\n", "This is line number 14\n", "This is line number 15\n", "This is line number 16\n", "This is line number 17\n", "This is line number 18\n", "This is line number 19\n", "This is line number 20\n"] 
-  Każdy wiersz w drukowanym wynik kończy się na 
\n, ponieważ były one w wierszach pliku tekstowego. -  Lepiej byłoby, gdybyś użył 
withkiedy otwierasz plik, ponieważ ta konstrukcja organizuje zamykanie plików po użyciu. -  Zauważyłem, że nazwa Twojego pliku to 
file. Powinieneś unikać używania nazw, które są częścią języka Python. 
Jeśli chcesz, aby kod obcinał nowe linie, oto jedna opcja:
 >>> with open("sample.txt") as sample: 
 ... for line in sample: 
 ... print(line.rstrip()) 
 ...  
 This is line number 1 
 This is line number 2 
 This is line number 3 
 This is line number 4 
 This is line number 5 
 This is line number 6 
 This is line number 7 
 This is line number 8 
 This is line number 9 
 This is line number 10 
 This is line number 11 
 This is line number 12 
 This is line number 13 
 This is line number 14 
 This is line number 15 
 This is line number 16 
 This is line number 17 
 This is line number 18 
 This is line number 19 
 This is line number 20 
 Uwaga t hat Użyłem rstrip, który usuwa białe znaki tylko z prawego końca ciągu.