假设我要处理文件的每一行,但最后一行需要特殊处理:
with open('my_file.txt') as f:
for line in f:
if <line is the last line>:
handle_last_line(line)
else:
handle_line(line)
问题是,如何实现? Python 中似乎没有检测文件结束的功能。
除了将行读入列表(使用 f.readlines() 或类似方法)之外,还有其他解决方案吗?
最佳答案
处理前行:
with open('my_file.txt') as f:
line = None
previous = next(f, None)
for line in f:
handle_line(previous)
previous = line
if previous is not None:
handle_last_line(previous)
当循环终止时,您知道最后一行刚刚被读取。
通用版本,让您分别处理最后 N 行,使用 collections.deque()
object :
from collections import deque
from itertools import islice
with open('my_file.txt') as f:
prev = deque(islice(f, n), n)
for line in f:
handle_line(prev.popleft())
prev.append(line)
for remaining in prev:
handle_last_line(remaining)
关于python - Python中如何判断一行是否是最后一行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18449646/