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')

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

  • 相关阅读:
    POJ 1469 COURSES 二分图最大匹配
    POJ 1325 Machine Schedule 二分图最大匹配
    USACO Humble Numbers DP?
    SGU 194 Reactor Cooling 带容量上下限制的网络流
    POJ 3084 Panic Room 求最小割
    ZOJ 2587 Unique Attack 判断最小割是否唯一
    Poj 1815 Friendship 枚举+求最小割
    POJ 3308 Paratroopers 最小点权覆盖 求最小割
    1227. Rally Championship
    Etaoin Shrdlu
  • 原文地址:https://www.cnblogs.com/layerluo/p/9468536.html
Copyright © 2011-2022 走看看