• day8--文件管理2


    文件处理的模式:

    open("文件路径",''打开文件模式'','指定的字符编码')

    print(f.edcoding)     ----可以查看文件的编码

    文件打开模式补充

    r+   w+   a+  

    首先新建一个文本文档。填入内容。
    with open(r'b.txt', 'r+', encoding='utf-8')as f:
      # print(f.writable())
      # print(f.readable())
      f.write('哈哈笑') # 打开的文件可以写入,写了三个文字,他替换了b.txt里面的前三个文字
      print(f.read())   #无法读出来刚刚写入的内容。因为with还没有执行完毕还没有存入硬盘

    with open(r'b.txt', 'w+', encoding='utf-8')as f:
      f.write('123haha')   #打开的文件可以写入,直接覆盖了原来内容
      print(f.read())     #无法读出来刚刚写入的内容。因为with还没有执行完毕还没有存入硬盘

    with open(r'b.txt', 'a+', encoding='utf-8')as f:
      f.write('小狗,小猫咪')   #可以添加,他会直接在文档后面添加。
      print(f.read())   #现在是读不出来。需要移动光标才可以读,因为光标在最后面
                          # 执行一次,内容就添加一次

    文件内光标的移动

    f.seek(offset,whence)

    f.seek(offset,whence)

    offset: 相对偏移度 (光标移动的位数)针对的是字节

    whence:指定光标位置从何开始   

    0:从文件开头   

    1:从当前位置   

    2:从文件末尾

    补充:   

    utf-8:

            中文是3个bytes        英文是1个bytes   

    gbk:

            全部都是2个bytes   

    open函数不设置encoding,默认是gbk   

    与encode一毛钱都没有,encoding只是一个参数   

    除了read里面的参数是针对字符,其他都是针对字节

    with open(r'b.txt','r',encoding='utf-8')as f:
      print(f.tell())   # 查看光标的位置
      f.seek(2, 0)     # 2代表光标移动的字节,0是从头开始。
      print(f.read(2)) # 在光标位置开始读取2个字符。

    with open(r'b.txt','rb')as f:
      f.read(3)   #光标移动3个字节,二进制中是一个汉字。
      f.seek(6, 1) # 光标在当前位置移动6个字节。即2个汉字
      print(f.tell()) #光标在地9个字节那边
      # print(f.read(3))
      print(f.read(3).decode('utf-8'))   #解码2进制字符转化为文字
       
    with open(r'b.txt', 'rb')as f:
      f.seek(-6, 2)
      print(f.tell())
      print(f.read(3).decode('utf-8'))

    修改文件内容

    将文件中经费改为钱
    第一种方案:
    with open(r'b.txt','r',encoding=('utf-8'))as f:
      data = f.read()
      # print(data)
      # print(type(data))
    with open(r'b.txt', 'w', encoding=('utf-8'))as f:
      des = data.replace('经费', '钱')
      f.write(des)

    第二种方案
    import os
    with open(r'b.txt', 'r', encoding=('utf-8'))as rf,
          open(r'a.txt', 'w', encoding=('utf-8'))as wf:
      data = rf.read()   #赋值变量名为data
      res = data.replace('经费', '钱')
      wf.write(res)

    os.remove('b.txt')     #删除b.txt
    os.rename('a.txt','b.txt')#   改名字a.txt改为b.txt

    写入文件:

    # 写入文件
    import time
    time = time.strftime('%Y:%m:%d %H:%M:%S')
    with open(r'b.txt', 'a', encoding=('utf-8'))as f:
      for i in range(3):
          f.write(f'{time}:到周末了,可以休息了,好开心 ')

    获取文件实时动态:

    # 写入文件
    import time
    time = time.strftime('%Y:%m:%d %H:%M:%S')
    with open(r'b.txt', 'a', encoding=('utf-8'))as f:
      for i in range(3):
          f.write(f'{time}:到周末了,可以休息了,好开心 ')
  • 相关阅读:
    试题 基础练习 Sine之舞
    试题 基础练习 Huffuman树
    试题 基础练习 完美的代价
    支付宝支付功能, 创建订单并生成支付链接的接口, 后端支付宝异步回调接口
    GenericAPIView, drf内置的基础分页器和偏移分页器的使用, 过滤器, django-filter插件实现区间分类
    celery, 数据库分表
    redis
    注册, 校验手机号接口, 手机号注册接口, 全局配置drf-jwt身份认证, 局部配置SendSmsAPIView类的频率认证, Vue操作Cookie
    登录, 发送验证码接口, 对官方提供的短信SDK进行二次封装
    pycharm全局搜索快捷键: ctrl + n, Xadmin的使用, 前端Banner小组件, 后端控制轮播图展示的数量, git
  • 原文地址:https://www.cnblogs.com/lishuangjian/p/11822279.html
Copyright © 2020-2023  润新知