文件基本操作
with open('stu_score.txt','r',encoding='utf-8') as f: print(f.read(),end='') #一 #二 #三 #四 #五 f.seek(0) print(f.readline()) #一 f.seek(0) print(f.readlines()) #['一 ', '二 ', '三 ', '四 ', '五 '] print(f.readable()) #True print(f.writable()) #False print(f.name) #stu_score.txt print(f.encoding) #utf-8
光标的操作
#梦想是有……实力的人才能谈论的现实。 #Didn't double diligence, neither can nor a genius. with open('stu_score.txt','r+',encoding='utf-8') as f: print(f.tell()) print(f.read(2))#打开方式是文本模式,所以是读取2个字符 #梦想 # f.seek(0)#光标归0 #0 f.seek(6)#移动了6个字节,也就是2(utf-8,3个字节表示一个汉字)个中文字符 print(f.tell()) #6 print(f.readline()) #是……有实力的人才能谈论的现实。 print(f.tell()) #55 f.seek(61) print(f.readline()) # double diligence, neither can nor a genius. f.seek(0,2)#到末尾 print(f.tell())# print(f.readline())#读不出什么了
文件修改
#文件修改 # 他很有钱 # 他很帅 # 但他依然很孤独 # 因为他明明可以靠脸吃饭,却在学python # 方式一:将硬盘存放的该文件的内容全部加载到内存, # 在内存中是可以修改的,修改完毕后,再由内存覆盖到硬盘(word,vim,nodpad++等编辑器) import os with open('stu_score.txt','r',encoding='utf-8') as read_f, open('stu_score.txt.bak','w',encoding='utf-8') as write_f: data=read_f.read()#全部读入内存,如果文件很大,会很卡 data=data.replace('他','我')#在内存中完成修改 write_f.write(data)#一次性写入新文件 os.remove('stu_score.txt') os.rename('stu_score.txt.bak','stu_score.txt') #我很有钱 #我很帅 #但我依然很孤独 #因为我明明可以靠脸吃饭,却在学python # 方式二:将硬盘存放的该文件的内容一行一行地读入内存,修改完毕就写入新文件,最后用新文件覆盖源文件 import os with open('stu_score.txt','r',encoding='utf-8') as read_f, open('stu_score.txt.bak','w',encoding='utf-8') as write_f: for line in read_f: line=line.replace('我','你') write_f.write(line) os.remove('stu_score.txt') os.rename('stu_score.txt.bak','stu_score.txt') # 你很有钱 # 你很帅 # 但你依然很孤独 # 因为你明明可以靠脸吃饭,却在学python