2025-05-28 学习记录--Python-文件
合抱之木,生于毫末;九层之台,起于累土;千里之行,始于足下。💪🏻
一、文件 ⭐️
(一)文件的基本概念 🍭
文件是以计算机硬盘为载体存储在计算机上的信息集合,文件可以是文本文档、图片、程序等等。计算机文件基本上分为二种:二进制文件(没有统一的字符编码)和纯文本文件(有统一的编码,可以被看做存储在磁盘上的长字符串)。
- 纯文本文件编码格式常见的有ASCII、ISO-8859-1、GB2312、GBK、UTF-8、UTF-16等。
- 二进制文件与文本文件的一个最主要的区别在于是否有统一的字符编码格式,二进制文件顾名思义是直接由0与1组成,无统一的字符编码。如图片文件(jpg、png),视频文件(avi)等。
(二)文件的读取 🍭
举例: 🌰
# 打开文件
f = open('test.txt') # 相对路径
# 读取文件
context = f.read()
print(context)
# 关闭文件
f.close()
输出结果: 👇🏻
你好
我在学习python
文件
(三)文件的写入 🍭
writeFile.py
# 打开文件
f = open('test.txt',mode='w') # 若已有文件test.txt,则覆盖原内容;若没有文件test.txt,则新建同级文件test.txt
# 写入文件内容
f.write('你好,我是mia\n很高兴认识你')
# 关闭文件
f.close()
运行后,test.txt
文件的内容如下: 👇🏻
你好,我是mia
很高兴认识你
(四)文件的追加 🍭
addFile.py
# 打开文件 mode='a'表示追加
f = open('test3.txt',mode='a') # 若已有文件test3.txt,则获取到该文件;若没有,则新建同级文件test3.txt
# 写入文件
f.write('hello')
# 关闭文件
f.close()
运行一次,test3.txt
文件里的内容追加一次hello
,如下: 👇🏻
hellohello # 假如运行addFile.py两次
(五)with
语句 🍭
test.txt
:
你好,我是mia
很高兴认识你
with.py
:
with open('test.txt',mode='r',encoding='utf-8') as f: # 这句等同于 f = open('test.txt',mode='r',encoding='utf-8')context = f.read()print(context)
print('hello')
输出结果: 👇🏻
你好,我是mia
很高兴认识你
hello
(六)csv
文件 🍭
1、csv
文件的读取
data.csv
姓名,科目,成绩
mia,python,100
mia,java,80
jack,python,88
readCsv.py
# 导入csv模块,用于处理CSV文件
import csv# 打开名为'data.csv'的文件,模式为读取('r'),编码为utf-8
with open('data.csv', mode='r', encoding='utf-8') as f:# 创建CSV读取器对象,用于逐行读取CSV文件cf = csv.reader(f)# 读取CSV文件的表头(第一行),存储在head变量中head = next(cf)# 初始化一个空列表,用于存储分数scores = []# 遍历CSV文件的每一行数据for i in cf:# 将每行的第3列(索引为2)转换为整数,并添加到scores列表中scores.append(int(i[2]))# 计算分数的平均值:总和除以数量average = sum(scores) / len(scores)# 打印计算出的平均值print(average)
89.33333333333333
2、csv
文件的写入
起始data.csv
:
姓名,科目,成绩
mia,python,100
mia,java,80
jack,python,88
writeCsv.py
:
# 导入csv模块,用于处理CSV文件
import csv# 打开名为'data.csv'的文件,模式为追加('a'),编码为utf-8
# 'a'模式表示:如果文件存在,则在文件末尾追加数据;如果文件不存在,则创建新文件
with open('data.csv', mode='a', encoding='utf-8') as f:# 创建CSV写入器对象,用于写入数据到CSV文件cf = csv.writer(f)# 向CSV文件中写入单行数据:['tom', 'c', '50']# 列表中的每个元素对应CSV文件中的一列cf.writerow(['tom', 'c', '50'])# 定义一个包含多行数据的列表,每行数据是一个子列表lista = [['lily', 'c', '70'], ['jack', 'c', '77'], ['lily', 'java', '90']]# 向CSV文件中一次性写入多行数据(lista中的所有行)# writerows()方法接受一个嵌套列表,每个子列表代表一行数据cf.writerows(lista)
运行writeCsv.py
后的data.csv
:
姓名,科目,成绩
mia,python,100
mia,java,80
jack,python,88
tom,c,50
lily,c,70
jack,c,77
lily,java,90