TEXTFILE:
1
2
3
4
5
6
\n
\n
我知道lines[-1]
可以获得最后一行,但我想忽略任何新行并获取最后一行文本(在本例中为6)。
答案 0 :(得分:2)
关于内存的最佳方法是耗尽文件。像这样:
with open('file.txt') as f:
last = None
for line in (line for line in f if line.rstrip('\n')):
last = line
print last
虽然可以做得更优雅。一种稍微不同的方法:
with open('file.txt') as f:
last = None
for last in (line for line in f if line.rstrip('\n')):
pass
print last
答案 1 :(得分:2)
读取整个文件,然后根据换行符分割readed文件,并创建非空元素列表。然后打印列表中的最后一个元素。
with open('file') as f:
print([i for i in f.read().split('\n') if i][-1])
答案 2 :(得分:0)
对于一个小文件,你可以读取所有行,丢弃任何空行。请注意,我已经使用内部生成器去除线条,然后将它们排除在外部。
with open(textfile) as fp:
last_line = [l2 for l2 in (l1.strip() for l1 in fp) if l2][-1]
答案 3 :(得分:0)
with open('file') as f:
print([i for i in f.read().split('\n') if i != ''][-1])
这只是对Avinash Raj的答案的编辑(但由于我是一个新帐户,我无法评论它)。这将保留数据中的任何None值(即,如果最后一行中的数据为“None”,它将起作用,但根据您的输入,这可能不是问题)。
答案 4 :(得分:0)
with open('path/to/file') as infile:
for line in infile:
if not line.strip('\n'):
continue
answer = line
print(answer)
这将在结尾打印6
换行符。您可以决定如何剥离它。以下是一些选项:
answer.rstrip('\n')
删除尾随换行符answer.rstrip()
删除尾随空格answer.strip()
删除任何周围的空格答案 5 :(得分:-1)
with open ('file.txt') as myfile:
for num,line in enumerate(myfile):
pass
print num