文件操作
r 只读
w 写
a 追加
w模式 写的时候如果没有文件则会自动创建文件,有的话刚开始写入的时候会清空在写入
r模式读取一行的时候,在末尾会默认跟一个
(换行符)
(回车)
只读模式r 正常文本
rb模式下,可以不指定打开文件的编码,但是在写文件的时候必须将字符串转化为utf-8的bytes数据
只读rb 字节
read() 默认全读完 可以指定读几个
read(n) 读取n个字符,需要注意的是,如果再次读取的时候,那么会在当前位置接着读
readline 一行一行读
a 追加 在文本末尾追加
r+ 读写模式 必须是先读在写 在末尾添加
w+ 写读模式 先将所有的内容清空,然后写入.最后读取.但是读取的内容是空的,不常用
a+ 追加写读 不论先读还是后读 都是读取不到数据的
路径
相对路径 绝对路径
相对路径:同一个文件夹下的文件. 相对于当前这个程序所在的文件夹而言. 如果在同一个文件夹中. 则相对路径就是这个文件名. 如果在上一层文件夹. 则要../
基本操作
seek(0)移动光标到文件最开头
seek(0,1) 两个参数的时候表示光标在当前位置
seek(0,2) 表示光标在末尾
seek(n) 光标移动到n的位置,注意,移动的单位是bytes,所有如果是UTF-8的中文部分药是3的倍数
flush 刷新
tell() 查看光标位置
truncate() 截断 将光标后面的删除
深坑
在r+模式下,如果读取了内容 .不论读取的内容多少.光标显示的是多少.自爱写入多少或者操作文件的时候都是在结尾进行操作
修改文件
文件修改:只能将文件的内容读取到内存中,将信息修改完毕,然后将源文件删除,将新文件的名字改成老文件的名字
import os
with open('s',mode='r',encoding='utf-8')as f1,
open ('s_new',mode='w',encoding='utf-8')as f2:
content=f1.read()
content_new=content.replace("旧","新")
f2.write(content_new)
os.remove('s')
os.rename('s_new','s')
整行操作
整行操作
import os
with open('s',mode='r',encoding='utf-8')as f1,
open ('s_new',mode='w',encoding='utf-8')as f2:
for line in f1:
new_line=line.replace('旧','新')
f2.write(new_line)
os.remove('s')
os.rename('s_new','s')