Python 文件的操作

1.今日内容

  1. 文件操作的初识
  2. 文件操作的读
  3. 文件操作的写
  4. 文件操作的追加
  5. 文件的其他操作
  6. 打开文件的另一种方式
  7. 文件的改

2.具体内容

  1. 文件操作的初识

    • 文件的操作步骤

      • 打开文件
      • 对文件句柄进行相应的操作
      • 关闭文件
      f = open('/Users/Documents/python文件操作.txt',mode = 'r',encoding = 'utf-8')
      content = f.read()
      f.close()
      '''
      f = open('文件路径',mode = '文件操作方式',encoding = '编码')
      f 文件句柄
      文件操作
      f.close()
      '''
      '''
      编码可以不写:默认操作系统默认的编码
      windows:gbk
      linux:utf-8
      os:utf-8
      '''
      
  2. 文件操作的读

    • r --- 读取文本文件

      • read() --- 全部读取
      • read(3) --- 通过字符来读取
      • readline() --- 读取一行
      • readlines() --- 一行一行的读取并存放到列表中
      • for
      #read 全部读取。
      f = open('文件的读',encoding = 'utf-8')
      content = f.read()
      print(content,type(content)) # 两岸猿声啼不住 str
      f.close()
      
      #read(3)按照字符读取
      f = open('文件的读',mode = 'r',encoding = 'utf-8')
      content = f.read(3)
      print(content) # 两岸猿
      f.close
      
      #readline() 读取一行
      f = open('文件的读')
      content = f.readline()
      print(content) 
      #两岸猿声啼不住
      #
      f.close()
      
      #readlines() 返回一个列表,列表的每一个元素是原文件的每一行
      f = open('文件的读')
      content = f.readlines()
      print(content)
      
      for 读取
      f = open('文件的读')
      for line in f:
        print(line)
      f.close()
      
    • rb --- 读取非文本文件(不能指定编码)

      f = open('跑车.jpeg',mode = 'rb')
      content = f.read()
      print(content)
      f.close()
      
    • r+ --- 读并追加 先读后写(顺序不能错)

      f = open('文件的读',mode = 'r+')
      content = f.read()
      f.write('加上了么')
      f.close()
      
  3. 文件的写

    • w --- 写入文本文件(如果文件存在先清空在写入,如果不存在就新建)

      f = open('文件的写',mode = 'w')
      f.write('写了么')
      f.close()
      
    • wb --- 写入非文本文件(不能指定编码)

      f = open('跑车.jegp',mode = 'rb')
      content = f.read()
      f.close()
      f1 = open('跑车2.jepg',mode = 'wb')
      f1.write(content)
      f1.close()
      
    • w+ --- 写读,先写后读 ,需要移动光标

      f = open('文件的写',mode = 'w+')
      f.write('人的一切痛苦,本质都是对自己无能的愤怒')
      f.seek(0,0) #移动光标到文件的开头
      content = f.read()
      print(content)
      f.close()
      
  4. 文件的追加

    • a --- 追加写入文本文件(在原文件的末尾接着写)

      f = open('文件的追加',mode = 'a')
      f.write('读万卷书,行万里路')
      f.close()
      
    • ab --- 追加写入非文本文件(不能指定编码)

    • a+ --- 追加写读,先写后读,需要移动光标

      f = open('文件的写读',mode = 'a+')
      f.write('拉斯维加斯')
      f.seek(0,0)
      print(f.read())
      f.close()
      
      
  5. 文件的其他操作

    • .tell() 查看光标当前位置(返回的是字节数)

    • seek('',''). 移动光标的位置

      • seek(0,0) ---移动光标到文件开头
      • seek(0,1) ---移动光标到当前位置
      • seek(0,2) ---移动光标到文件末尾
      • seek(9) --- 只有一个数时,移动到开头后的第几个字节位置
    • flush() 强制刷新

      f = open('文件的写读')
      print(f.tell()) #0
      print(f.read()) #拉斯维加斯
      print(f.tell()) #15
      
      
  6. 文件打开的另一种方式

    • with open --- 面向对象的上下文管理

      • 可以在操作完成后自动关闭文件
      • 可以同时打开多个文件
      • with open('文件路径',mode = '操作方式',encoding = '编码') as f
      with open('文件的写') as f1,open('文件的读') as f2:
        print(f1.read())
        f2.write('火锅王朝')
      
      
  7. 文件的改

    • 当你相对原文件改动,但是想要备份原文件时,可以这样做
    with open('文件的改',mode = r)as f1,open('文件改啦',mode = 'a')as f2:
      for line in f1:
        s = line.replace('一','二')
        f2.write(s)
    import os
    os.rename('文件的改','原文件的改') --- 对原文件进行备份
    os.rename('文件改啦','文件的改') --- 把新文件改成原文件的名字
    
    
原文地址:https://www.cnblogs.com/xiaohei-chen/p/11889412.html