在编写一些测试时,我陷入了一些奇怪的行为。我终于把问题缩小到文件打开了。例如,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。
我的问题是:为什么强制在文件末尾出现行跳转?
答案 0 :(得分:3)
它在这里工作。您是否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