1、打开文件
f = open(文件名,打开模式,encoding="utf-8") =======>打开文件, 选择操作模式,以及打开的解码模式并赋值给f
f = open("wjm","r") 只读
f = open("wjm","w") 只写 没有就创建 有就 先清空原文件
f = open("wjm","x") 没有就创建 如果文件存在就报错,不存在就创建并可以写内容
f = open("wjm","a") 没有就创建 存在就写 追加文件内容
r+ 可读写 用seek 可在任意位置写
w+ 清空 再写
x+ 可读 可写
a+ 可读可写 但是写的永远在最后
######## f = open("wjm","ab") 操作模式加b之后 就是以字节类型读取
以常规utf-8读取
f = open("wjm","a")
f.write("虞智渊")
f.close()
以字节读取
f = open("wjm","ab")
f.write(bytes("虞智渊",encoding ="utf-8")
f.close()
#######
date = f.read(1) 读取第一个字符 如果没用加b 读取的时候是按字符去读取的
###########
f.seek(1) 主动把指针调整到指定的位置 并且写的话会覆盖后面的内容
不管是中文还是什么,都是以一个字节为单位去读取,会把中文变成乱码
######
f.tell() 当前指针所在的位置======》永远是以字节为单位去计算的
2、操作文件
通过源码查看功能
read() 无参数 读全部 ;有参数 1、有b 按字节 2、无b 按字符
tell() 获取当前指针位置 按字节操作
seek(22) 跳转到指定位置 按字节操作
write() 写数据 以覆盖的模式 打开有b 写字节 (可以自己转码去操作) 无b 写 字符
close() 关闭
fileno() 文件的描述符
flush() 强行刷新 中间刷新 不用等程序结束 就把写入的内容加进去
readable() 判断是否可读 返回的是bool值
readline() 仅读取一行 f.readline(3) 读取第三行
truncate() 截断数据 把前面的保留 后面的清空 truncate(3) 指针位置后面 ( 第几个字符)的清空
迭代for 循环文件对象, 循环的是每一行
f = oper()
for line in f:
3、关闭文件
1# f.close()
2# with oper(文件名) as f: 代码结束 会自动关闭文件
pass
with open("wjm1",“r”,"utf-8") as f1, open("wjm2"“w”,"utf-8") as f2: 可以同时单开多个文件
pass
这样的好处是可以对两个文件同时操作
将B文件的前十行 写入A文件
with open("wjm1",“r”,"utf-8") as f1, open("wjm2"“w”,"utf-8") as f2:
times = 0
for line in f1:
time+=1
if times <=10:
f2.write(line)
else:
break
将a文件中的ycj 替换成yuzy
with open("wjm1",“r”,"utf-8") as f1,open("wjm2"“w”,"utf-8") as f2:
for line in f1: 读取每一行
rep_str=ling.replace("ycj","yuzy") 每一行操作 替换
f2.write(rep_str) 将替换后的写入新文件
f2.close() 关闭