168:ファイルの末尾のn行を削除する
末尾 n 行の直前までのバイト数を数え、ファイルを切り詰めます。
import collections
def remove_tail(file_name, lines):
u"""
ファイルの末尾 lines 行を削除する
"""
file_ = open(file_name, 'rb+')
try:
pos_queue = collections.deque([0] * lines)
del_pos = 0
now_pos = 0
for line in file_:
del_pos = pos_queue.pop()
now_pos += len(line)
pos_queue.appendleft(now_pos)
file_.truncate(del_pos)
finally:
file_.close()