第八天
'''
除了可读·可写之外剩下都是自己的特性
r+
w+
a+
'''
with open(r'r.txt','r+',encoding='gbk') as f:
f.write('绘梨衣')
print(f.read())
# print(f.readable())
# print(f.writable())
with open(r'w.txt', 'w+', encoding='gbk')as a:
a.write('绘梨衣的幻想乡')
a.seek(0,0)
print(a.read())
# with open(r'a.txt','a+',encoding='gbk') as b:
# b.write('后悔不已')
# b.seek(0,0)
# print(b.read())
r+:在不操作光标的情况下写入内容,会从开头开始,要是有内容的,会覆盖相对用的字节的内容,如果文件不存在会报错,先写在读,不能直接读出新内容
w+:不能直接读取文件之前有的内容,会被清除,写入内容会覆盖掉文件里全部原内容,不移动光标的情况下,也是不能直接新是写入的内容,如果文件不存在会创建新文件写入内容,
a+:不能直接反馈文件内容,写入内容会在原内容最后开始写入,不移光标的情况下,不能反馈新内容,如果文件不存在,会新建一个文件写入,也会有返回值
文件内光标的移动
'''
f.seek(offset,whence)
offset:,针对的是字节
whence:指定光标位置从何开始
0:从文件开头
1:从当前位置
2:从文件末尾
补充:
utf-8:
中文是3个bytes
英文是1个bytes
gbk:
全部都是2个bytes
open函数不设置encoding,默认是gbk
与encode一毛钱都没有,encoding只是一个参数
除了read里面的参数是针对字符,其他都是针对字节
但rb模式下read里针对的也是字节
'''
with open(r'a.txt','r',encoding='gbk') as f:
f.seek(6,0)
print(f.read(1))
with open(r'a.txt','r',) as f:
f.seek(3,1)
print(f.tell())
print(f.read(6).encode('gbk'))
写入文件
import time
res = time.strftime('%Y-%m-%d %H:%M:%S')
# print(res)
with open(r'a.txt','a',encoding='utf-8')as f:
f.write(f'{res}: 邪王之眼-冻结时空\n')
获取文件内容
with open(r'a.txt','r',encoding='utf-8') as f:
f.seek(0, 2)
while True:
res = f.readline()
if res:
print({res})
break
修改文件内容
with open(r'a.txt','r',encoding='gbk')as f:
data = f.read()
print(data)
print(type(data))
with open(r'a.txt','w',encoding='gbk')as f:
res = data.replace('开开心心','开心心')
f.write(res)
with open(r'b.txt','r',encoding='gbk')as rf,\
open(r'b_wap.txt','w',encoding='gbk')as wf:
data = rf.read()
res = data.replace('开开心心','开心心')
wf.write(res)
os.remove('b.txt')
os.rename('b_wap.txt','b.txt')