实验5 文件应用编程
1. 实验任务1:统计文件行数(不包括空白行)
方法1:
# task1_1.py # 统计文件data1_1.txt行数 (不包括空白行) # data1_1.txt中的空白行都是由\n构成的空白行 with open('data1_1.txt', 'r', encoding = 'utf-8') as f: data = f.readlines() # 一次读入所有数据,按行读取,保存到列表中 n = 0 for line in data: if line.strip('\n') == '': continue n += 1 print(f'共{n}行')
方法2:
# task1_2.py # 统计文件data1_1.txt行数 (不包括空白行) # data1_1.txt中的空白行都是由\n构成的空白行 with open('data1_1.txt', 'r', encoding = 'utf-8') as f: n = 0 for line in f: # 逐行遍历处理 if line.strip('\n') == '': continue n += 1 print(f'共{n}行')
方法1:
# task1_3.py # 统计文件data1_2.txt行数 (不包括空白行) # data1_2.txt中的空白行包括由空格、Tab键(\t)、换行(\n)构成的空白行 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}行')
方法2:
# task1_4.py # 统计文件data1_2.txt行数 (不包括空白行) # data1_2.txt中的空白行包括由空格、Tab键(\t)、换行(\n)构成的空白行 with open('data1_2.txt', 'r', encoding = 'utf-8') as f: n = 0 for line in f: if line.isspace(): continue n += 1 print(f'共{n}行')
2. 实验任务2:统计独特行行数(在文件中只出现一次的行)
# 统计其中只出现过一次的独特行行数,在屏幕上打印输出结果。 # task2.py with open('data2.txt', 'r', encoding = 'utf-8') as f: data = f.read().split('\n') unique_line = [] for line in data: if data.count(line) == 1: unique_line.append(line) print(f'共{ len(unique_line) }独特行') for i in unique_line: print(i)
3. 实验任务3:文件数据四舍五入处理
with open('data3.txt', 'r', encoding = 'utf-8') as f: a=f.read().split("\n") b=[] b.append('四舍五入数据') for i in range(1,len(a)): b.append(round(float(a[i]))) a[i]=str(round(float(a[i]),1)) with open('data8.txt', 'w+', encoding = 'utf-8') as f: f.write(a[0]+'\t'+str(b[0])) f.write("\n") for i in range(1,len(a)): f.write(str(a[i])) f.write('\t'*2+str(b[i])) if len(a[i])>=4 else f.write('\t'*2+str(b[i])) f.write('\n') for i in range(1,len(a)): a[i]=float(a[i]) print(a[0],'\n'+str(a[1:])) print(b[0],'\n'+str(b[1:]))
4. 实验任务4:成绩文件处理
with open('data4.txt','r+',encoding='utf-8') as f: str=[i.strip('\n').split('\t') for i in f] a=str.pop(0) str.sort(key=lambda x : (x[2],-int(x[-1]))) print('\t'.join(a)) for i in str: print('\t'.join(i)) with open('data4_progressed.txt','w') as f: f.write('\t'.join(a)) f.write('\n') for i in str: f.write('\t'.join(i)) f.write('\n')
5. 实验任务5:文档统计处理
with open('data5.txt', 'r+', encoding = 'utf-8') as f: data=f.read() print('行数',len(data.splitlines())) print('单词数',len(data.split())) s=0 for i in data: if i.isspace(): s=s+1 print('空格数',s) print('字符数',len(data)) with open('data5_with_line.txt', 'w+', encoding = 'utf-8') as f: for i in range(len(data.splitlines())): f.write(str(i+1)+' '+str(data.splitlines()[i])+'\n')