当前位置:首页>python>Python学习笔记——从入门到报废(二十一、文件(下))

Python学习笔记——从入门到报废(二十一、文件(下))

  • 2026-10-11 08:31:29
Python学习笔记——从入门到报废(二十一、文件(下))
上一章讲完了文件的打开和关闭,现在我们讲讲怎么操作文件。由于我们较多直接处理的是文本文件,而二进制文件很少进行直接操作,通常用一些第三方库或函数进行间接处理,因此我们的讲解主要围绕文本文件举例说明。

一、获取文件的内容

假设有一个“test.txt”文件,其中的内容为:

Hello!I want to learn Python.

我们可以使用read、readline、readlines等函数来读取其中的内容:

# 按照字节数读取内容print(fp.read(10))     # Output: Hello!\nI w# 读取一整行内容,包括换行符 \nprint(fp.readline())   # Output: Hello!\n# 读取所有行,包括 \nprint(fp.readlines())  # Output: ['Hello!\n', 'I want to learn Python.']

注意,读取的操作会伴随文件指针的移动。例如我们按照字节去调用,得到的输出将会是:

print(fp.read(5))  # Output: Helloprint(fp.read(5))  # Output: !\nI w

第一次读取了5个字节,文件指针来到了第6个字节处,此时再读取5个字节,则获取到的就是第6至第10个字节。同样的情况也适用于readline。

二、写入内容到文件

使用write和writelines可以实现把字符串内容写入到文件当中。例如:

fp = open("./test.txt", "w", encoding="utf-8")fp.write("Hello!\nI want to learn Python!")fp.writelines(["Hello!\n", "I want to learn Python!"])

注意,写操作时,程序不会在行末尾自动添加换行符“\n”,需手动写入。

上一章我们提到,调用close可以让程序将内容从内存写到磁盘,否则就需等到程序终止。若要提前把数据保存出来,我们可以使用flush函数,刷新文件内部缓冲,把数据立刻写入文件, 而不是被动的等待:

fp.flush()

三、读取CSV文件

(1)CSV文件

CSV(Comma-Separated Values,逗号分隔值)是一种简单的文本文件格式,用于存储表格数据。CSV文件中的每一行代表一个数据记录,使用逗号“,”分隔。CSV文件通常用于数据交换,几乎所有的电子表格软件(如Excel)和数据库系统都能读取和写入CSV文件。

如下即为一个CSV文件(文件名为example.csv)内容的示例:

和普通表格一样,首行可以是表头。CSV是文本文件,可以使用常规文本编辑软件打开,上图即使用代码编写软件打开后的样式。

(2)CSV模块

Python提供了多种方法来读取CSV文件,最常用的是标准库中的csv模块和第三方库pandas,我们主要介绍csv模块。csv模块是Python的标准库,无需额外安装。它提供了读取和写入CSV文件的功能。

读取CSV文件,注意打开文件后,需使用csv模块生成一个专门的读取器,便于做文件内容的解析:

import csv# 打开 CSV 文件with open('example.csv', mode='r', encoding='utf-8') as file:    # 创建 CSV 读取器    csv_reader = csv.reader(file)    # 读取表头    header = next(csv_reader)    print(f"表头: {header}")    # 逐行读取数据    for row in csv_reader:        print(row)# Output:# ['姓名', '年龄', '城市']# ['张三', '25', '北京']# ['李四', '30', '上海']# ['王五', '22', '广州']

写入CSV文件:

import csv# 数据data = [    ["姓名", "年龄", "城市"],    ["张三", 25, "北京"],    ["李四", 30, "上海"],    ["王五", 22, "广州"]]# 打开 CSV 文件withopen('output.csv', mode='w', encoding='utf-8', newline='') asfile:    # 创建 CSV 写入器    csv_writer = csv.writer(file)    # 写入数据    for row in data:        csv_writer.writerow(row)

会发现,CSV文件有时会添加表头,而每次读取或写入时,做到表头和数据的对应需要额外的代码。此时,我们可以使用字典读取和字典写入,来简化这些操作。

字典读取:

import csv# 打开 CSV 文件with open('example.csv', mode='r', encoding='utf-8') as file:    # 创建字典读取器    csv_reader = csv.DictReader(file)    # 逐行读取数据    for row in csv_reader:        print(row)# Output:# {'姓名': '张三', '年龄': '25', '城市': '北京'}# {'姓名': '李四', '年龄': '30', '城市': '上海'}# {'姓名': '王五', '年龄': '22', '城市': '广州'}

字典写入:

import csv# 数据data = [    {"姓名": "张三", "年龄": 25, "城市": "北京"},    {"姓名": "李四", "年龄": 30, "城市": "上海"},    {"姓名": "王五", "年龄": 22, "城市": "广州"}]# 打开 CSV 文件withopen('output.csv', mode='w', encoding='utf-8', newline='') asfile:    # 创建字典写入器    fieldnames = ["姓名", "年龄", "城市"]  # 表头    csv_writer = csv.DictWriter(file, fieldnames=fieldnames)    # 写入表头    csv_writer.writeheader()    # 写入数据    for row in data:        csv_writer.writerow(row)

写入完成后,output.csv文件中的内容即为:


往期回顾:

Python可视化Seaborn全攻略 | Part.7

Python可视化Seaborn全攻略 | Part.6

Python学习笔记——从入门到报废(二十、文件(上))

Python可视化Seaborn全攻略 | Part.5

最新文章

随机文章