log文件记录了云服务器上当天上传的文件信息
其中第一列是文件名,第二列是文件大小
请编写一个程序,统计出不同类型的文件的大小总和
比如:
jpeg 9988999
json 324324
png 2423233
log文件内容如下:
f20180111014341/i_51a7hC3W.jpeg 169472 FrI
f20180111014341/j_R0Hpl4EG.json 1036 For
f20180111020739/i_0TDKs0rD.jpeg 169472 FrI
f20180111020739/j_JFO6xiir.json 1040 FmU
f20180111090619/i_1BwNksbL.jpg 49634 FtX
f20180111090619/i_3BKlsRaZ.jpg 30152 FoW
f20180111090619/i_5XboXSKh.jpg 40238 Fl8
log ="""
f20180111014341/i_51a7hC3W.jpeg 169472 FrI
f20180111014341/j_R0Hpl4EG.json 1036 For
f20180111020739/i_0TDKs0rD.jpeg 169472 FrI
f20180111020739/j_JFO6xiir.json 1040 FmU
f20180111090619/i_1BwNksbL.jpg 49634 FtX
f20180111090619/i_3BKlsRaZ.jpg 30152 FoW
f20180111090619/i_5XboXSKh.jpg 40238 Fl8
"""
log_dict = {} # 定义空字典,用来存储文件扩展名和大小
# 把原始记录切割成一行行,用splitlines()方法,输出的是list
for line in log.splitlines():
if line.count('.') != 1: # 把首尾两行空行跳过,因为其它行都有.号,空行没有
continue
# print(line)
file_name =line.split()[0].strip() # 取出文件名,str类型
file_type = file_name.split('.')[1] # 从文件名中取出文件扩展名
# print("文件名称:", file_type) # 调试用
size = int(line.split()[1].strip()) # 取出文件大小,转换为int类型
# print("文件大小:", size) # 调试用
if file_type not in log_dict.keys(): # 注意这里不需for循环遍历字典,dict.keys()功能会检查所有的key
log_dict[file_type] = size # 如果键不在log_dict字典里,则把键和对应的值加入字典
else:
log_dict[file_type] += size # 如果键在字典里,则只需把值跟原有的值相加
print(log_dict) # 直接输出为字典格式
# 以下代码为输出字符串格式
out_put = str(log_dict).strip('{').strip('}')
out_put = out_put.replace(',', '\n')
print(out_put)