假设我想处理文件的每一行,但最后一行需要特殊处理:
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() 或类似的)之外,还有其他解决方案吗?
处理previous line:
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 http://docs.python.org/2/library/collections.html#collections.deque:
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)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)