Python 文件操作指南:使用 open 和 with open 实现高效读写

2024-06-20 1226阅读

🍀 前言

博客地址:

  • CSDN:https://blog.csdn.net/powerbiubiu

    👋 简介

    本系列文章主要分享文件操作,了解如何使用 Python 进行文件的读写操作,介绍常见文件格式的读取和写入方法,包括TXT、 CSV、JSON、XML 等,以及如何使用相应的 Python 库来处理这些文件格式,同时对数据进行持久化操作。本章节就从最常见的TXT文件开始。

    📖 正文

    1 open

    文件准备

    春眠不觉晓
    处处闻啼鸟
    迎来风雨声
    花落知多少
    
    1.1 读取文件内容
    f = open('test.txt', 'r', encoding='utf-8')
    res = f.read()
    print(res)
    f.close()
    #春眠不觉晓
    #处处闻啼鸟
    #迎来风雨声
    #花落知多少
    

    Tips:

    读取文件的时候,这个文件必须存在,否则会抛异常

    1.1 内容写入文件

    在对文件写入内容的时候,若指定的文件不存在,则会自动创建

    f = open('test1.txt', 'w', encoding='utf-8')
    s = '春眠不觉晓\n处处闻啼鸟\n迎来风雨声\n花落知多少\n'
    f.write(s)
    f.close()
    

    但是存在一个问题,如果在执行一次以上代码,文件中的内容被覆盖了,没有实现追加,如果需要实现对文件内容的追加,需要指定参数mode的值为a才能实现追加功能

    f = open('test1.txt', mode='a', encoding='utf-8')
    s = '春眠不觉晓\n处处闻啼鸟\n迎来风雨声\n花落知多少\n'
    f.write(s)
    f.close()
    
    1.3 模式详解
    mode含义
    r只读的方式打开文件,文件指针在文件的开头
    r+读写的方式打开文件,文件指针在文件的开头
    w打开一个文件只用于写入,并从头开始编辑,原有内容会被删除
    w+打开一个文件用于读写,并从头开始编辑,原有内容会被删除
    a打开一个文件用于追加,文件指针在文件结尾
    a+打开一个文件用于读写,文件指针在文件结尾

    这里不涉及对二进制的操作,所以只列举文本操作使用的mode参数。

    1.4 文件读写方法
    • f.read():一次性读取所有内容
    • f.readline():按行读取,一次读取一行内容
    • f.readlines():返回一个列表,列表中每个元素就是一行内容
    • f.readable():判断文件是否可读,可读返回True,否则返回False
    • f.write(s):将s写入文件
    • f.seek(0):将文件指针移到文件开头,可以在支持读写的情况下使用,先下如内容,然后将文件指针指向开头,在读取文件内容
      1.5 上下文管理

      使用方法和open一样,这种是通过上下文管理器的方式进行文件读写,在结束后,可以省略close操作,一搬正常情况下,可以使用with open进行操作

      只读模式

      with open('test.txt', 'r') as f:
          content = f.read()
      

      只写模式

      with open('test.txt', 'w') as f:
          f.write('Hello, World!')
      

      追加模式

      with open('test.txt', 'a') as f:
          f.write('append Hello, World!')
      

      2 封装工具类

      使用场景:假设需要对人的姓名,年龄,性别信息进行保存,通过txt文件进行存储。

      import os.path
      class FileTools:
          def __init__(self, file: str, sp: str = ','):
              """
              初始化
              :param file: 文件
              :param sp: 分割字符,默认逗号,
              """
              if not os.path.exists(file):
                  # 文件不存在,创建文件
                  with open(file, 'w') as f:
                      pass
              self.file = file
              self.sp = sp
          def read(self) -> list:
              """
              读取所有内容,返回列表
              :return:
              """
              with open(self.file, 'r+', encoding='utf-8') as f:
                  content = f.readlines()
              return [i.strip().split(self.sp) for i in content]
          def append(self, *args) -> None:
              """
              追加写入
              :param content:
              :return:
              """
              try:
                  with open(self.file, 'a+', encoding='utf-8') as f:
                      if len(args) == 1:
                          f.write(args[0] + '\n')
                      else:
                          f.write(self.sp.join(args) + '\n')
              except TypeError as e:
                  print(f"写入文件异常:{e}")
      if __name__ == '__main__':
          ft = FileTools('users.txt')
          ft.append('张三', '19', '男')
          ft.append('李四', '20', '女')
          print(ft.read())
      # [['张三', '19', '男'], ['李四', '20', '女']]
      

      这里通过不定长参数args来接收需要写入的内容,通过初始化默认的,来进行拼接,所以当添加了两条数据后,文件中的内容如下:

      张三,19,男
      李四,20,女
      

      然后读取的时候,同样通过默认的,进行分割处理,将结果通过列表嵌套列表返回

      ✏ 总结

      with open文件操作,更多的是文件进行读与写的操作,并不支持更新删除功能,这需要通过读取所有内容,来筛选数据进行删除,更新,然后再将数据覆盖原文件,这种操作属于数据库增删改查功能。

      💖 欢迎关注我的公众号

      Python 文件操作指南:使用 open 和 with open 实现高效读写

VPS购买请点击我

免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们,邮箱:ciyunidc@ciyunshuju.com。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!

目录[+]