Python добавляет новую строку в конце открытого файла - PullRequest
0 голосов
/ 21 сентября 2018

При написании некоторых тестов я застрял на странном поведении.Я наконец сузил проблему до открытия файла.Например, этот, my.dat:

one line
two lines and no final line break

Затем я запустил этот код Python:

with open('my.dat') as fd:
    assert fd.read()[-1] == '\n'

Для обоих Python 3 и 2 этот код не вызывает никакой ошибки AssertError.

У меня вопрос: зачем форсировать наличие перехода строки в конце файлов?

1 Ответ

0 голосов
/ 21 сентября 2018

Это работает здесь.Вы на 100% уверены, что на самом деле в конце файла нет новой строки?Потому что многие текстовые редакторы (atom, notepad ++) автоматически добавляют новые строки в конце файла.

>>> open('a.txt', 'w').write('blabla')
6
>>> open('a.txt', 'r').read()
'blabla'
>>> assert open('a.txt', 'r').read()[-1] == '\n'
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AssertionError
...