zoukankan      html  css  js  c++  java
  • 文件的详细操作

    文件的可读可写:

      r+t

      w+t

      a+t

    默认是t模式,t不能单独使用,必须是rt,wt,at

    f.read() 读出来的是一个打的字符串

    f.readlines() 相当于一个for循环

    文件打开模式b模式

    强调:

      与t模式类似但是不能单独使用,必须是rb,wb,ab

      b模式下读写都是以bytes单位的

      b模式下一定不能指定encoding参数

    ‘utf-8’等是字符编码,只能处理字符,处理不了包括图片视频在内的其他形式

     b模式(二进制)也可以读txt,但要读出字符,需要解码

      seek()

      文件内指针移动,只有t模式下的read(n),n代表的字符的个数

      除此之外文件内指针的移动都是以字节为单位

      file.seek(offset,whence)两个参数:

      offset:代表控制指针移动的字节数

      whence:代表参照什么位置进行移动

          whence=0 参照文件开头 可以在t和b模式下使用

          whence=1 参照当前所在的位置,必须b模式下使用

          whence=2 参照文件末尾,必须b模式下使用

      在utf-8中一个中文字符占三个字节,一个英文字符占一个字节

      修改文件的两个方式:

        方式一

          1.先把文件内容全部读入内存

          2.然后再内存中完成修改

          3.再把修改后的结果覆盖写入原文件

        优点: 在文件修改的过程中硬盘上始终一份数据

        缺点:会在文件内容过大的情况下,占用过多的内存

        with open('d.txt',mode='rt',encoding='utf-8') as f:
          all_data=f.read()
        with open('d.txt',mode='wt',encoding='utf-8') as f:
          f.write(all_data.replace('alex','dsb'))

        方式二:

          1.以读的方式打开源文件,以写的方式打开一个临时文件

          2.从源文件中每读一样内容修改完毕后写入临时文件,直到源文件读取完毕

          3.删掉源文件,将临时文件重命名为源文件名

        优点: 同一时刻在内存中只存在源文件的一行内容,不会过多地占用内存
        缺点: 在文件修改的过程中会出现源文件与临时文件共存,硬盘上同一时刻会有两份数据,即在修改的过程中会过多的占用硬盘

          import os

          with open('d.txt',mode='rt',encoding='utf-8') as read_f,

            open('.d.txt.swap',mode='wt',encoding='utf-8') as write_f:
            for line in read_f:
              write_f.write(line.replace('alex','dsb'))

          os.remove('d.txt')
          os.rename('.d.txt.swap','d.txt')

        总的来说第一种方式耗内存,第二种方式耗硬件

  • 相关阅读:
    表达式树作为条件封装多表连查
    EF之结构进一步优化
    EF之ExecuteSqlCommand更新出现无效的解决方案
    dynamic与匿名对象
    webapi 通过dynamic 接收可变参数
    EF INNER JOIN,LEFT JOIN,GROUP JOIN
    Linq join on 多条件
    Excel 行列转置 解决竖向拉,字母跟着递增的问题
    Windows7 安装vs2015 之后 调试Web项目IIS启动不了 aspnetcore.dll未能加载
    Mysql 服务在本机,需要单机调试Mysql数据库 发生 不认识hostname‘localhost’
  • 原文地址:https://www.cnblogs.com/layerluo/p/9468536.html
Copyright © 2011-2022 走看看