zoukankan      html  css  js  c++  java
  • 字符编码及文件处理

    文件处理是什么,什么是文件?

    文件是操作系统暴露给用户可以操作复杂硬盘的简单方法和接口

    文件的读写模式:

    r      只读模式
    w 是写模式
    a 追加模式
        r 只读模式 :
    1.文件不存在的情况下 直接报错

    2.文件存在的情况下 光标在文件的开头
    w只写模式:(#######)
    1。文件不存在的情况下,自动创建一个新的文件
    2.文件存在的情况下,先清空文件的内容再写入
    文件的操作单位:
    t:文本模式
    只能和r w a连用,并不写的情况下按默认就是t

    b:二进制模式:
    只能和r/w/a连用
    该模式通常用来处理非文本文件
    直接存储网络上传输过来的二进制数据

    流程:
      python代码操作文件:
        f = open(r'文件路径',mode='读写模式',encoding='文件的编码')
        f.close()
    

     示例中的f可以认为就是一个遥控器,也就是文件的句柄

     文件的上下管理:

    with open(r'文件的路径’,mome='读写模式', encoding = ‘文件的编码’) as f:
        
            文件操作代码
    

      实例解析:

      

    1.代码中的r时代表原生的意思,也就是后面的转移符失去功能,代表字符原有的意思

    2.文件的路径分为两种:

      1.相对路径:必须要有一个参照物;通常对于执行文件同一根目录(同一阶层)

      2.绝对路径:不需要任何参照物,直接根据文件的路径定位,相当于GPS定位。

    3. mome :momen模式有R W A三个模式,不写的情况默认为 ‘r+t’  ps:t代表文本模式

    4.encoding 参数只是在momen在文本模式下才使用,因为b模式不能使用

    补充知识:

    文件其他模式的补充:

      r+      读写(可读可写)

      w+      写读(可读可写)

      a+      写读(可读可写)

      

    文件操作的功能

      f.read() 一次性将文件内容全部读到内存 当文件过大时可能导致计算甲内存溢出

      f.readline() 一行行的读取内容,始终在内存只有一行的内容

      f.readlines() 将一行行的内容存放到列表中,成为一个个元素

      f.readable():是否可读

      f.writeable() 是否可写
      f.write() 写文件
      f.writelines() 要接收一个容器类型
          for i in l:
            f.write(i)
      f.writeline() 写一行

     文件内光标的移动:

    关键字为seek:

    seek有两个参数:seek移动都是字节数

    offset:相对偏移量 光标的移动位数

    whence:

      0:代表参照文件的开头    文本模式和二进制模式都可以使用

       1:参照光标的所在位置,  只能在二进制模式使用

      2,: 参照文件的末尾   只能在二进制模式下是使用

    tell() 内置功能可以查看光标的移动了多少位 bytes

    truncate()截取、截断的意思 接受的字节的长度

    如:

    f.truncate(8)
    则保留0~8字节数,其他的后面全部删除(截断)
    

     修改文件两种方式:

      一、现将数据由硬盘读取到内存(读文件)

        在内存中完成内容修改(字符串的替换)关键字:replace()

        再覆盖原来的文件内容(写文件)

     优势:

        任意时间硬盘上面只有一个文件,不会占用过多的硬件空间

     缺点:

        当文件过大时可能会造成内存的溢出(因为使用了 read())

    二、创建一个新的文件

      for循环读取老文件内容到内存进行修改,将修改号的内容写到新的文件里面

      将老文件删除,将新文件的文件名改为老文件的名字(需要用到import os 函数 os的remove及renname)
    os.remove('老文件名') # 删除老文件名字
    os.rename(‘原文件名字’,‘需要改变成的名字’)
    

      

    优势:

      内存中始终只有一条内容 不占内存

    缺点:

      在某一时间硬盘上会同时出现两个文件

    
    
    
    
    
    
    
    
    
    
    
    
    
    
    

  • 相关阅读:
    【网络】默认路由(路由黑洞,路由终结)
    textstroke(文本描边)和textfillcolor(文本填充色)Css3演示
    enter键提交表单
    Web App和Native App 谁将是未来
    模拟input type=file
    margintop 无效,避开麻烦的margin叠加(margin collapsing)
    用jquery写的简单tab效果
    CSS3下的渐变文字效果实现
    jQuery阻止冒泡和HTML默认操作
    设置文本输入框默认值
  • 原文地址:https://www.cnblogs.com/ioipchina/p/11153871.html
Copyright © 2011-2022 走看看