擅长:python、mysql、java
<p>这里的问题是文件的最后一行没有以换行符结束。因此<code>f.readlines()</code>将类似于以下内容(注意,最终条目没有<code>\n</code>):</p>
<pre><code>['Darkly I gaze into the days ahead,\n',
'And see her might and granite wonders there,\n',
'Beneath the touch of Time’s unerring hand,\n',
'Like priceless treasures sinking in the sand.']
</code></pre>
<p>因此,当您反转此操作时,您的第一个“行”实际上不会写入<code>\n</code>,并且<code>fReverse.writelines()</code>不会添加自动结束的行。要解决此问题,只需检查<code>f.readlines()</code>的最后一行是否以<code>\n</code>结尾,并在必要时添加它:</p>
<pre><code>def tail(filename, nlines):
'''Returns a list containing the last n lines of the file.'''
f = open(filename, 'r')
fReverse = open('output.txt', 'w')
lines = f.readlines()
if not lines[-1].endswith('\n'):
lines[-1] += '\n'
fReverse.writelines(reversed(lines))
fReverse.close()
f.close()
fReverse = open('output.txt', 'r')
listFile = []
for i in range(1,nlines+1):
listFile.append(fReverse.readline(),)
fReverse.close()
return listFile
</code></pre>