Python入门—文件读写

文件读写的基本流程:
#1、打开文件
#2、读写文件
#3、关闭文件

f = open('文件读写',encoding='utf-8')   #打开文件,并赋值给f,encoding='utf-8'让中文可以正常显示不会报错
f = open(r'C:\Users\shanbaoliang\PycharmProjects\untitled2\day2\文件读写',encoding='utf-8') #可以写绝对路径,强制字符r'c:\niuhanyang'

f.readline() #读取文件一行数据,读完文件指针下移
f.readlines() #获取文件里所有数据,每一行数据放到一个list里面,换行会读到\n
f.read() #读取文件,获取文件所有内容


文件打开方式:
r 读模式 只能读 不能写 文件不存在会报错
r+ 读写模式 能读 能写 文件不存在会报错

w 写模式 不能读 能写,会覆盖 文件不存在创建一个
w+ 写读模式 指针在文件最后,读空   能写,会覆盖 文件不存在创建一个

a 追加模式 不能读 能写,写在最后 文件不存在创建一个
a+ 追加模式 指针在文件最后,读空   能写,写在最后 文件不存在创建一个

指针移动:
f.seek(0) #移动指针到文件的哪个位置,0表示最前面
f.cloes 关闭文件


names=['a','b','c']
for name in names :
f.write(name+'\n')

f.writelines(names) #将list中元素写入文件,names=['a\n','b\n','c\n']
f = open('data.txt','r+',encoding='utf-8')

for line in f : #循环文件对象,每次取一行
# print(line)


f = open('data.txt','r+',encoding='utf-8')
f.seek(0)
new=f.read().replace('123','a') #对应位置修改,
print(new)
f.write(new)

缓存区立即写入磁盘
#CPU——>内存——>缓冲区——>磁盘
f.write('xx,yy\n')
f.flush() #把缓冲区内容立即写到磁盘,不写可能出现write有延迟
f.close()

with自动关闭文件
with open('aa','w') as f : #代码自己判断文件调用完,自动关闭
with open ('f1','w') ,open('f2','r') as f :
f.read()
f.write('sfgg')


文件修改
一、简单粗暴直接(适合文件小)
#1、先获取文件里所有内容
#2、然后修改内容
#3、清空源文件
#4、重写

f = open('data.txt','a+',encoding='utf-8')
f.seek(0)
new=f.read().replace('12','bb') #对应位置修改,只能替换相同位数的字符,否则会覆盖其他内容
print(new)
f.write(new)
f.seek(0)
f.truncate() #清空是从指针位置开始清空
f.write(new)
f.close()

方法二:高效的处理方式
#1、先打开原来的文件,再打开一个空文件
#2、把循环处理原来文件的每一行数据,处理后写到新文件
#3、把原来文件删掉,把新文件改为原文件名字

with open('words.txt',encoding='utf-8') as f, open('.words','w',encoding='utf-8') as fnew :
for line in f :
line = line.lstrip()
if line :
line = line.replace('你','you')
fnew.write(line)

import os                #文件操作
os.remove('words.txt')        #删除文件
os.rename('.words','words')     #修改文件名

猜你喜欢

转载自www.cnblogs.com/flynne/p/9169155.html