读出和一些写
with open("testtext1.txt", "r",encoding='utf-8') as f:
c=f.readlines()
print(c)
for line in c:
line = line.strip('\n') #去掉列表中每一个元素的换行符
print(c)
结果:
['哈啊哈\n', '而已\n', '134sd\n', 'sw48哈']
['哈啊哈\n', '而已\n', '134sd\n', 'sw48哈']
把c里面的元素取出来,一次次的改掉,好像并不影响这个c,可能因为用的是line.strip
with open("testtext1.txt", "r",encoding='utf-8') as f:
d=f.readline()
print(d)
结果:
哈啊哈
f=open("testtext1.txt", "r",encoding='utf-8')
c=f.readlines()
print(c)
l=f.readline()
print(l)
f.close()
g=open("testtext1.txt", "rb")
d=g.readline()
print(d)
e=g.readlines()
print(e)
结果:
['哈啊哈\n', '而已\n', '134sd\n', 'sw48哈']
b'\xe5\x93\x88\xe5\x95\x8a\xe5\x93\x88\r\n'
[b'\xe8\x80\x8c\xe5\xb7\xb2\r\n', b'134sd\r\n', b'sw48\xe5\x93\x88']
但是
f=open("testtext1.txt", "r",encoding='utf-8')
l=f.readline()
print(l)
f.close()
g=open("testtext1.txt", "rb")
d=g.readline()
print(d)
结果就变了
哈啊哈
b'\xe5\x93\x88\xe5\x95\x8a\xe5\x93\x88\r\n'
print本身有一个换行,文本每行自带一个换行\n。
例如r+w
覆盖写就能用来文件复制
学生成绩统计
f=open("score.txt","r",encoding='utf-8')
s=f.readlines()
print(s)
运行结果:
['学号 姓名 专业 笔试 平时 实验\n',
'SA21234015 李子豪 凝聚态物理 90 87 90\n',
'SA21234010 孟鑫勇 垃圾治理 80 90 90']
我在简书复制这段结果后,加了回车键,否则应该是一行输出。
f=open("score.txt","r",encoding='utf-8')
for line in f.readlines():
print(line)
运行结果:
学号 姓名 专业 笔试 平时 实验
SA21234015 李子豪 凝聚态物理 90 87 90
SA21234010 孟鑫勇 垃圾治理 80 90 90
两个问题:一是print和文本的换行,造成了空行;二是表头之间的差距大???
f=open("score.txt","r",encoding='utf-8')
for line in f.readlines():
print(line)
运行结果:
学号 姓名 专业 笔试 平时 实验
SA21234015 李子豪 凝聚态物理 90 87 90
SA21234010 孟鑫勇 垃圾治理 80 90 90
f=open("score.txt","r",encoding='utf-8')
head=f.readline() #读表头行
newhead=head[:16]+head[16:-1]+' 总评成绩'
print(newhead)
for line in f.readlines():
l=line.split()
s=round(int(l[3])*0.5+int(l[4])*0.25+int(l[5])*0.25,2) #求总评分
l[4]=l[4]
l[5]=l[5]
print(" ".join(l)+' '+str(s)) #加空格对齐
f.close()
运行结果:
学号 姓名 专业 笔试 平时 实验 总评成绩
SA21234015 李子豪 凝聚态物理 90 87 90 89.25
SA21234010 孟鑫勇 垃圾治理 80 90 90 85.0
f=open("score.txt","r",encoding='utf-8')
head=f.readline() #读表头行
newhead=head[:16]+head[16:-1]+' 总评成绩'
print(newhead)
sl=""
for line in f.readlines():
l=line.split()
s=round(int(l[3])*0.5+int(l[4])*0.25+int(l[5])*0.25,2) #求总评分
l[4]=l[4]
l[5]=l[5]
print(" ".join(l)+' '+str(s)) #加空格对齐
sl+=" ".join(l)+' '+str(s)+"\n"
f.close()
sl=sl[:-1]
sl=newhead=head[:16]+head[16:-1]+' 总评成绩\n'+sl
g=open("score1.txt","w",encoding='utf-8')
g.write(sl)
g.close()