文件操作

  1. 文件操作的初始

    1. 打开文件需要知道三个!

      1. 文件的路径

      2. 打开方式:读,写,追加,读写,写读。

      3. 编码方式utf-8,gbk,gb2312.

        f1 = open('d:读取文件.txt',encoding='utf-8',mode='r')
        content = f1.read()
        print(content)
        f1.close()
        
        #open 内置函数,open底层调用的是操作系统的接口。
        #f1,变量,也叫文件句柄。对文件进行的任何操作,都通过文件句柄.的方式。
        #encoding:可以不写,不写参数,默认的编码本,操作系统的默认的编码。
        #f1.close():关闭文件话柄。
        #mode:选择操作模式,r=读取,w=写入,a=追加,r+=读取追加
        
        
    2. 文件操作的三部曲:

      1. 打开文件
      2. 对文件句柄进行相应操作
      3. 关闭文件。
    3. 报错原因:

      1. UnicodeDecodeError:文件储存时与文件打开时编码运用不一致。

      2. 第二个错误:路径分隔符产生问题:

        1. r'c:UsersoldboyDesktop'#在路径前面增加一个r。
          
    4. 文件操作的读

      1. r,rb,r+b 四种模式

        1. r:read for
        2. rb:操作的是非文本的文件。图片,视频,音频。
        read#全部都读出来
        f = open('文件的读',encoding='utf-8')
        content = f.read()
        print(content)
        f.close
        
        #read(n)按照字符读取
        f = open('文件的读',encoding='utf-8')
        content=f.read(5)
        print(content)
        f.close
        
        #readline()读取一行
        f = open('文件的读',encoding='utf-8')
        print(f.readline())
        f.close
        
        #readlines()返回一个列表,列表中的每个元素都是原文件的每一行。
        f = open('文件的读',encoding='utf-8')
        l1 = f.readlines()
        for line in l1:
            print(l1)
        f.close
        
        for 读取
        f = open('文件的读',encoding='utf-8')
        for i in f:
            print(i)
        f.close
        
    5. 文件操作的写

      1. w,wb,w+,w+b四种模式

        #没有文件,创建文件,写入内容
        f = open('文件的写',encoding='utf-8',mode='w')
        f.write('要写的内容')
        f.close
        
        #如果文件存在,先清空文件内容,再写入新内容
        f = open('文件的写',encoding='utf-8',mode='w')
        f.write('要写的内容')
        f.close
        
        wb
        f = open('美女.jpg',encoding='utf-8',mode='rb')
        content = f.read()
        f.close
        f1 = open('美女2.jpg',encoding='utf-8',mode='mb')
        f1.write(content)
        f1.close
        
    6. 文件操作的追加

      a,ab,a+,a+b四种模式

      #没有文件创建文件,追加内容
      f = open('文件的追加',encoding='utf-8',mode='a')
      f.write('要追加的内容')
      f.close
      
      #有文件,在原文件的最后面追加内容
      f = open('文件的追加',encoding='utf-8',mode='a')
      f.write('要追加的内容')
      f.close
      
    7. 文操作的其他模式 r+

      #读取并追加 #顺序不能错误
      f = open('文件的读写',encoding='utf-8',mode='r+')
      content = f.read()
      print(content)
      f.write('人的一切痛苦,本质都是对自己无能的愤怒')
      f.close
      
    8. 文件操作的其他功能

      1. 三个大方向:

      读,四种模式:r rb r+ r+b

      写,四种模式:w ,wb,w+,w+b

      追加 四种模式:a,ab,a+,a+b

      相应的功能:对文件句柄的操作:read read(n) readline() readlines()write()

      #tell 获取光标位置,单位字节
      f = open('文件的读写',encoding='utf-8')
      print(f.tell())
      content=f.read()
      print(content)
      f.close
      
      #seek 调整光标的位置
      f = open('文件的读写',encoding='utf-8')
      f.seek(7)
      content=f.read()
      print(content)
      f.close
      
      flush 强制刷新
      f = open('文件的其他功能',encoding='utf-8',mode='w')
      f.write('fhjsakhk')
      f.flush()
      f.close()
      
    9. 打开文件的另一种方式

      优点1:可以一次操作多个文件
      with open('文件的读',encoding='utf-8')as f1,
      	open('文件的写',encoding='utf-8',mode='w')as f2:
              print(f1.read())
              f2.write('hfdjahk')
      优点2:不用手动关闭文件句柄
      with open('文件的读',encoding='utf-8')as f1:
          print(f1.read)
      
    10. 文件操作的改

      1. 文件操作改的流程:
        1. 以读的模式打开原文件。
        2. 以写的模式创建一个新文件。
        3. 将原文件的内容读出来修改成新内容,写入新文件。
        4. 将原文件删除
        5. 将新文件重命名成原文件
      2. 具体代码
      第一种:
      import os #加载一个模块
      with open('alex自述',encoding='utf-8')as f1,
      	open('alex自述.bak',encoding='utf-8',mode='w')as f2:
              du = f1.read()
              gai = du.replace('alex','SB')
              f2.write(gai)
      as.remove('alex自述')
      as.remane('alex自述.bak','alex自述')
      
      第二种:
      import os
      with open('alex自述',encoding='utf-8')as f1,
      	open('alex自述.bak',encoding='utf-8',mode='w'):
              for i in f1:
                  zhi = i.replace('alex','sb')
                  f2.write(zhi)
      as.remove('alex自述')
      as.vemane('alex自述.bak','alex.自述')
      
      
      
      #有关清空问题:
      关闭文件句柄,再次以w模式打开此文件时,才会清空。
      with open('文件再写',encoding='utf-8',mode='w')as f:
          for i in range(9):
              f1.write('只要句柄不关闭,写多少都不会被删除')
      
      
原文地址:https://www.cnblogs.com/wang-xing-hao/p/10877923.html