文章目录
- 一、文件的写入(使用 "w" 模式)
- 二、文件的追加(使用 "a" 模式)
- 三、文件备份案例
- 接之前的答案
在 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)