实验5:文件应用编程
任务实验1:统计文件行数(不包括空白行):
task1.1:
1 with open('data1_1.txt','r',encoding='utf-8') as f: 2 data=f.readlines() 3 n=0 4 for line in data: 5 if line.strip('\n')=='': 6 continue 7 n+=1 8 print(f'共{n}行')
task1.2:
1 with open('data1_1.txt','r',encoding='utf-8') as f: 2 n=0 3 for line in f: 4 if line.strip('\n')=='': 5 continue 6 n+=1 7 print(f'共{n}行')
task1.3:
with open('data1_2.txt','r',encoding='utf-8') as f: n=0 for line in f: if line.strip()=='': continue n+=1 print(f'共{n}行')
task1.4:
1 with open('data1_2.txt','r',encoding='utf-8') as f: 2 n=0 3 for line in f: 4 if line.isspace(): 5 continue 6 n+=1 7 print(f'共{n}行')
任务实验2:统计独特行行数(在文件中只出现过一次的行):
1 with open('data2.txt','r',encoding='utf-8') as f: 2 data=f.read().split('\n') 3 4 unique_line=[] 5 for line in data: 6 if data.count(line)==1: 7 unique_line.append(line) 8 9 print(f'共{len(unique_line)}独特行') 10 for i in unique_line: 11 print(i)
任务实验3:文件数据四舍五入处理
1 with open('data3.txt','r',encoding='utf-8') as f: 2 data=f.readlines() 3 x0=[] 4 x2=[] 5 x3=[] 6 for line in data: 7 x0.append(line.strip('\n')) 8 x1=x0[1:] 9 for i in x1: 10 a=float(i) 11 if a-int(a)>=0.5: 12 b=int(a)+1 13 else: 14 b=int(a) 15 x3.append(a) 16 x2.append(b) 17 print(f'原始数据:\n{x3}') 18 print(f'四舍五入后数据:\n{x2}') 19 x3.insert(0,'原始数据') 20 x2.insert(0,'四舍五入后数据') 21 with open('data3_processed.txt','w',encoding='utf-8') as f: 22 for i in range(len(x2)): 23 f.write(f'{x3[i]}\t{x2[i]}\n')
任务实验4:成绩文件处理
1 with open('data4.txt','r',encoding='utf-8') as f: 2 data=f.readlines() 3 data.remove(data[0]) 4 x0=[] 5 for i in data: 6 a=i.split() 7 x0.append(a) 8 x1=sorted(x0,key=(lambda x:x[2])) 9 x2=[x1[i] for i in range(0,8)] 10 x3=sorted(x2,key=(lambda x:x[3]),reverse=True) 11 x4=[x1[i] for i in range(8,10)] 12 x5=sorted(x4,key=(lambda x:x[3]),reverse=True) 13 y=x3+x5 14 15 y1=[] 16 for i in y: 17 b='\t'.join(i) 18 b=b+'\n' 19 y1.append(b) 20 y1.insert(0,'学号\t姓名\t专业\t分数\n') 21 for i in y1: 22 print(i) 23 with open('data4_processed.txt','w',encoding='utf-8') as f: 24 for i in y1: 25 f.write(i)
任务实验5:文档统计处理
1 with open('data5.txt','r',encoding='utf-8') as f: 2 data=f.read() 3 print('行数',len(data.splitlines())) 4 print('单词数',len(data.split())) 5 s=0 6 for i in data: 7 if i.isspace(): 8 s=s+1 9 print('空格数',s) 10 print('字符数',len(data)) 11 12 with open('data5_processed.txt','w+',encoding='utf-8') as f: 13 for i in range(len(data.splitlines())): 14 f.write(str(i+1)+' '+str(data.splitlines()[i])+'\n') 15