Python基础(十九、文件操作写入与追加)

发布时间:2024年01月06日


在 Python 中,open() 是一个内置函数,用于打开文件并返回文件对象。它是处理文件输入输出的主要方式之一。

下面是使用 open() 方法时需要注意的事项和好处:

注意事项:

  • 打开文件后,要记得关闭文件,这样可以释放系统资源。
  • 在打开文件时,应该指定正确的模式(如读取、写入或追加)。
  • 在使用文本文件时,应该指定正确的编码方式,以正确地解析和处理文件中的文本内容。
  • 在处理二进制文件时,不需要指定编码方式。

好处:

  • open() 方法使得 Python 可以非常方便地读取和写入文件,从而使文件操作变得更加简单。
  • 通过 open() 方法,Python 可以读取各种格式的文件,如文本文件、二进制文件、CSV 文件、JSON 文件等等。
  • 通过 open() 方法,Python 可以将读取的文件内容转换为特定的数据类型,如字符串、整数、浮点数、列表、字典等等。
  • open() 方法支持多种模式,如读取、写入、追加、二进制等等,可以根据不同的需求进行选择。

一、文件的写入(使用 “w” 模式)

在使用 “w” 模式进行文件写入时,需要注意以下事项:

  • 内容写入内存:写入的内容首先会被写入内存缓冲区中,并不直接写入磁盘文件。这是为了提高写入效率,减少频繁的磁盘写入操作。

  • 刷新内容到磁盘:为了确保内容被写入磁盘文件,可以通过 flush 方法手动刷新缓冲区,将内容写入磁盘。也可以通过 close 方法来关闭文件对象,它会自动执行刷新操作。

  • 文件不存在时创建文件:如果指定的文件不存在,Python 会自动创建一个新的文件,并将写入的内容写入其中。

  • 文件存在时清空内容重写:如果指定的文件已经存在,Python 会清空文件中的内容,然后将新的内容写入其中。

下面是一个示例代码,演示了如何使用 “w” 模式进行文件写入:

with open("example.txt", "w") as file:
    file.write("Hello, World!\n")
    file.write("This is an example.")
    # 使用 flush 方法刷新缓冲区,将内容写入磁盘
    file.flush()
    # 或者直接使用 close 方法关闭文件对象,它会自动执行刷新操作
    # file.close()

二、文件的追加(使用 “a” 模式)

在使用 “a” 模式进行文件追加时,需要注意以下事项:

  • 内容写入内存:与使用 “w” 模式一样,写入的内容首先会被写入内存缓冲区中,而不是直接写入磁盘文件。

  • 刷新内容到磁盘:同样可以通过 flush 方法手动刷新缓冲区,或者使用 close 方法自动执行刷新操作。

  • 文件不存在时创建文件:如果指定的文件不存在,Python 会自动创建一个新的文件,并将写入的内容写入其中。

  • 文件存在时末尾追加内容:如果指定的文件已经存在,Python 会将新的内容追加到文件的末尾。

下面是一个示例代码,演示了如何使用 “a” 模式进行文件追加:

with open("example.txt", "a") as file:
    file.write("This is an additional line.\n")
    file.write("This is another line.")
    # 使用 flush 方法刷新缓冲区,将内容写入磁盘
    file.flush()
    # 或者直接使用 close 方法关闭文件对象,它会自动执行刷新操作
    # file.close()

三、文件备份案例

本人比较懒,就直接在工作空间操作备份了,文件路径大家可以自定义。
将文件备份到一个新的文件.bak中,去掉原文件中的备注行(# xxxx)
实现代码如下:

with open("D:/xxx/answer.py","r", encoding="utf-8") as file:
   bak = open("D:/xxx/answer.py.bak","w", encoding="utf-8")
   for line in file:
       if line.startswith("#"):
           continue
       bak.write(line)
   bak.close()

在这里插入图片描述
在这里插入图片描述

接之前的答案

上一节忘记写这个的答案了,这里补一下[Python基础(十七、函数进阶用法)]答案(https://editor.csdn.net/md/?articleId=135401777)
题目:
编写一个函数 get_average_grade,接受一个学生的成绩列表作为参数,并计算该学生的平均分。要求忽略最高分和最低分后的成绩,即去掉一个最高分和一个最低分后再计算平均分。

'''
编写一个函数 get_average_grade,
接受一个学生的成绩列表作为参数,
并计算该学生的平均分。
要求忽略最高分和最低分后的成绩,
即去掉一个最高分和一个最低分后再计算平均分。
'''
gradeList = [99,82,93,63,63,67,87,74,46]
def get_average_grade(gradeList):
    # 排序,默认升序
    newGrageList = sorted(gradeList)
    sumGrade = 0
    for grade in newGrageList[1:len(newGrageList)-1]:
        sumGrade += grade
    avg = sumGrade/(len(newGrageList)-2)
    print(avg)
get_average_grade(gradeList)
文章来源:https://blog.csdn.net/qq_35716085/article/details/135412023
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。