处理循环输入后输出,看代码注释。

import sys
import re
from collections import defaultdict
dic = defaultdict(int)#创建默认字典,默认值为整数0
for s in sys.stdin:#循环输入字符串
    s = re.split(r'[\s\\]',s.strip())#利用正则分割当前字符串
    if len(s[-2])>16:#如果文件名大于16位字符,则只保留最后16位字符
        s[-2]=s[-2][-16:]
    s = ' '.join(s[-2:])#文件名、错误行号合并
    dic[s] += 1#存储到字典中
if len(dic)>8:#如果错误信息大于8条,则只输出最后8条
    for k in list(dic.keys())[-8:]:
        print(f'{k} {dic[k]}')
else:#错误信息小雨8条,全部输出
    for k in dic.keys():
        print(f'{k} {dic[k]}')