实验5 文件应用编程

task6.py

实验源码:

 1 with open(r'C:\Users\scy20030602\OneDrive\文档\Tencent Files\2420994345\FileRecv\实验5数据文件\实验5数据文件\data6.csv','r',
 2 encoding='gbk') as f:
 3     data=f.readlines()
 4 
 5 data.remove('原始数据\n')
 6 data0=[]
 7 for i in data:
 8     if i[-1]=='\n':
 9         i=i[:-1]
10     data0.append(float(i))
11 print('原始数据:')
12 print(data0)
13 
14 data1=[int(i+0.5) for i in data0]
15 print('四舍五入后数据:')
16 print(data1)
17 
18 with open(r'C:\Users\28678\Downloads\实验5数据文件\data6_processed.csv','w',
19 encoding='gbk') as f:
20     f.write('原始数据,四舍五入后数据\n')
21     for i in range(len(data1)):
22         f.write(str(data0[i])+','+str(data1[i])+'\n')

 

运行结果:

 

 task7.py

实验源码:

with open(r"C:\Users\scy20030602\OneDrive\文档\Tencent Files\2420994345\FileRecv\实验5数据文件\实验5数据文件\data7.csv",'r',
encoding='gbk') as f:
    data=f.readlines()

data0=[i.strip('\n').split(',') for i in data]
data0.remove(data0[0])

data1=sorted(data0,key=lambda x:(x[2],-int(x[3])))

print(f'{"学号":10s}{"姓名":10s}{"专业":10s}{"分数":10s}')
for h,i,j,k in data1:
    print(f'{h:10s}{i:10s}{j:10s}{k:10s}')

with open(r'C:\Users\28678\Downloads\实验5数据文件\data7_processed.csv','w',
encoding='gbk') as f:
    f.write('学号,姓名,专业,分数\n')
    for i in range(len(data1)):
        f.write(','.join(data1[i])+'\n')

运行结果:

 

 task8.py

实验源码:

with open(r"C:\Users\scy20030602\OneDrive\文档\Tencent Files\2420994345\FileRecv\实验5数据文件\实验5数据文件\hamlet.txt",'r') as f:
    data=f.read()

print('hamlet.txt粗略统计:')
print(f'行数:{len(data.splitlines())}')
print(f'单词数:{len(data.split())}')
print(f'字符数:{len(data)}')
print(f'空格数:{data.count(" ")}')

data1=data.splitlines()
data2=[]
for i in range(len(data1)):
    data2.append(f'{i+1} '+data1[i]+'\n')

with open(r'C:\Users\28678\Downloads\实验5数据文件\hamlet_with_line_number.txt',
'w') as f:
    f.writelines(data2)

运行结果:

 task9.py

实验源码:

def is_valid(id):
    if len(id)==18 and id[:-1].isdigit() and (id[-1].isdigit() or id[-1]=='X'):
        return True
    else:
        return False

with open(r"C:\Users\scy20030602\OneDrive\文档\Tencent Files\2420994345\FileRecv\实验5数据文件\实验5数据文件\data9_id.txt",'r') as f:
    data=f.readlines()

data.remove(data[0])
data0=[i.strip('\n').split(',') for i in data]

data1=[]
for i in data0:
    if is_valid(i[1])==True:
        i[1]=i[1][6:14]
        data1.append(i)

import datetime
t=datetime.datetime.now()
y=t.strftime('%Y%m%d')
for i in data1:
    i.append(str(int(y)-int(i[1][0:8])))

data2=sorted(data1,key=lambda x:-int(x[2]))

print('姓名, 出生日期, 年龄')
for i in data2:
    i[1]=i[1][0:4]+'-'+i[1][4:6]+'-'+i[1][6:8]
    i[2]=i[2][0:2]
    print(', '.join(i))

实验结果:

 task10-1.py

实验源码:

with open(r"C:\Users\scy20030602\OneDrive\文档\Tencent Files\2420994345\FileRecv\实验5数据文件\实验5数据文件\data10_stu.txt",'r') as f:
    data=f.readlines()

data0=[i.strip('\n').split('\t') for i in data]

import random
n=eval(input('输入随机抽点人数:'))
data1=random.sample(data0,n)
for i in data1:
    print(' '.join(i))

import datetime
t=datetime.datetime.now()
fn=t.strftime('%Y%m%d')

with open(r'C:\Users\28678\Downloads\实验5数据文件\{}.txt'.format(fn),'w') as f:
    for i in data1:
        i[0]+='\t'
        i[1]+='\t'
        i[2]+='\n'
        f.writelines(i)

实验结果:

 task10_2.py

 1 open('name.txt',encoding='gb18030',errors='ignore')
 2 with open(r"C:\Users\scy20030602\OneDrive\文档\Tencent Files\2420994345\FileRecv\实验5数据文件\实验5数据文件\data10_stu.txt",'r') as f:
 3     data=f.readlines()
 4 
 5 data0=[i.strip('\n').split('\t') for i in data]
 6 
 7 import datetime
 8 t=datetime.datetime.now()
 9 fn=t.strftime('%Y%m%d')
10 
11 import random
12 print(f'{"抽点开始":*^32s}')
13 n=eval(input('输入随机抽点人数:'))
14 a=0
15 while n!=0:
16     data1=random.sample(data0,n)
17     a+=1
18     for i in data1:
19         print(' '.join(i))
20         data0.remove(i)
21     if a==1:
22         with open(r"C:\Users\scy20030602\OneDrive\文档\Tencent Files\2420994345\FileRecv\实验5数据文件\实验5数据文件\{}.txt",'w') as f:
23             for i in data1:
24                 i[0]+='\t'
25                 i[1]+='\t'
26                 i[2]+='\n'
27                 f.writelines(i)
28     else:
29         with open(r"C:\Users\scy20030602\OneDrive\文档\Tencent Files\2420994345\FileRecv\实验5数据文件\实验5数据文件\{}.txt".format(fn),'a') as f:
30             for i in data1:
31                 i[0]+='\t'
32                 i[1]+='\t'
33                 i[2]+='\n'
34                 f.writelines(i)
35     n=eval(input('输入随机抽点人数:'))
36 print(f'{"抽点结束":*^32s}')

运行结果:

 通过本次实验学习,知道了如何在代码中表示文件路径,以及各种函数的使用方法,在以后的学习中也要多加练习。

posted @ 2023-06-05 10:18  魅力哥  阅读(34)  评论(0)    收藏  举报