2022-04-04 文件操作

读出和一些写

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。

1
2

例如r+w


3

4

覆盖写就能用来文件复制

学生成绩统计

5
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和文本的换行,造成了空行;二是表头之间的差距大???

6
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()
7
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容