第八天

 

第八天

文件打开模式的补充

'''
除了可读·可写之外剩下都是自己的特性
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')

 

posted @ 2019-11-08 20:14  迎着阳光  阅读(142)  评论(0编辑  收藏  举报