python

关注公众号 jb51net

关闭
首页 > 脚本专栏 > python > Python CSV文件操作

Python CSV文件读取与写入操作的基础指南

作者:我材不敲代码

CSV(Comma-Separated Values,逗号分隔值)是一种通用的纯文本结构化文件格式,以逗号分隔数据、换行区分行数据,具备格式简单、兼容性强、体积小巧的特点,下面我们就来看看如何使用Python进行CSV文件的读取与写入操作吧

深入理解CSV文件读写的核心概念、底层逻辑与实战用法,掌握Python基础文件操作核心技能,熟练解决读写过程中的常见报错,了解行业最佳实践,为后续数据分析、数据清洗、自动化办公打下基础。

本文属于《Python从入门到精通教程》Python文件操作篇(第五篇)

上一章我们讲解了二进制文件的读写(rb/wb模式),本章聚焦日常开发最常用的CSV结构化文件读写,零基础也能快速上手!

一、核心概念与背景

1.1 什么是CSV文件读写?

CSV(Comma-Separated Values,逗号分隔值)是一种通用的纯文本结构化文件格式,以逗号分隔数据、换行区分行数据,具备格式简单、兼容性强、体积小巧的特点,是数据分析、批量数据存储、跨平台数据传输的首选格式。

CSV文件的读取与写入是Python编程核心基础知识点,几乎所有数据处理、自动化办公、数据分析项目都会用到,是Python开发者必备技能。

1.2 为什么必须掌握CSV读写?

在实际开发和学习中,这项技能的核心价值体现在4点:

1.3 典型应用场景

场景类型具体应用核心技术要点
数据处理批量数据清洗、格式转换、数据筛选导出读写效率优化、异常数据捕获、编码适配
自动化任务定时导出日志数据、批量统计业务数据循环读写、文件覆盖/追加、日志记录
Web开发后端批量导入用户数据、导出业务报表批量读写、数据校验、异常处理
数据分析数据集加载、数据预处理、可视化数据源导出批量读取、空值处理、格式标准化

二、技术原理详解

2.1 Python文件操作核心原理

Python文件操作依托于内置IO流机制,无需额外安装第三方库即可完成基础读写。其核心设计依托Python三大特性:简洁易读、面向对象、跨平台兼容,搭配丰富的标准库与第三方库,实现高效文件处理。

核心架构逻辑:

┌─────────────────────────────────────────────────────────┐
│                    Python核心特点                        │
├─────────────────────────────────────────────────────────┤
│  ┌─────────────┐  ┌─────────────┐  ┌─────────────┐     │
│  │  简洁易读   │  │  面向对象   │  │  跨平台     │     │
│  │  (Readable) │  │  (OOP)      │  │  (Cross)    │     │
│  └─────────────┘  └─────────────┘  └─────────────┘     │
│         ↑                                    ↓          │
│  ┌─────────────────────────────────────────────────┐   │
│  │              丰富的标准库和第三方库              │   │
│  └─────────────────────────────────────────────────┘   │
└─────────────────────────────────────────────────────────┘

2.2 通用代码实现范式(面向对象)

封装通用数据处理类,适配文件读写、数据加工基础逻辑,可直接复用在CSV项目中:

class PythonDemo:
    """Python通用数据处理演示类"""
    
    def __init__(self, name):
        """
        初始化方法
        :param name: 任务名称
        """
        self.name = name
        self.data = []
        
    def add_data(self, item):
        """添加单条数据"""
        self.data.append(item)
        return self
    
    def process(self):
        """批量处理数据"""
        return [item * 2 for item in self.data]
    
    def show(self):
        """打印结果"""
        print(f"{self.name}的数据: {self.data}")
        print(f"处理结果: {self.process()}")

# 调用示例
if __name__ == "__main__":
    demo = PythonDemo("测试数据")
    demo.add_data(1).add_data(2).add_data(3)
    demo.show()

三、实战应用(可直接运行)

3.1 开发环境准备

3.1.1 Python安装(全平台通用)

# Windows:官网下载安装包,安装时勾选 Add Python to PATH
# 官网地址:https://www.python.org/downloads/
# macOS(Homebrew)
brew install python3
# Linux Ubuntu/Debian
sudo apt update
sudo apt install python3
# 验证安装是否成功
python --version
# mac/linux 可使用
python3 --version

3.1.2 环境检测代码

import sys
# 查看Python版本
print(f"当前Python版本: {sys.version}")

# 查看已安装依赖包
import pip
installed_packages = pip.get_installed_distributions()
print(f"已安装第三方包总数: {len(installed_packages)}")

3.2 Python基础语法示例(入门铺垫)

示例1:基础输出与变量

# 第一个Python程序
print("Hello, World!")
print("你好,Python!")

# 变量定义与格式化输出
message = "欢迎学习Python文件操作"
print(message)

name = "张三"
age = 25
score = 95.5
print(f"姓名: {name},年龄: {age},分数: {score}")

示例2:列表数据处理(CSV数据基础)

# 列表模拟CSV行数据
numbers = [1, 2, 3, 4, 5]

# 追加数据
numbers.append(6)
print(f"追加后数据: {numbers}")

# 列表推导式批量处理(高效替代for循环)
squares = [x**2 for x in numbers]
print(f"数据平方结果: {squares}")

# 条件过滤数据
even_numbers = [x for x in numbers if x % 2 == 0]
print(f"筛选偶数: {even_numbers}")

3.3 进阶面向对象示例

class Student:
    """学生信息类(模拟CSV结构化数据)"""
    # 类全局属性
    school = "Python编程学院"
    
    def __init__(self, name, age):
        """初始化学生姓名、年龄,创建成绩列表"""
        self.name = name
        self.age = age
        self.grades = []
    
    def add_grade(self, grade):
        """添加单科成绩"""
        self.grades.append(grade)
    
    def get_average(self):
        """计算平均分,兼容空数据场景"""
        if not self.grades:
            return 0
        return sum(self.grades) / len(self.grades)
    
    def __str__(self):
        """重写打印方法,格式化输出学生信息"""
        return f"学生: {self.name}, 年龄: {self.age}, 平均分: {self.get_average():.2f}"

# 实战调用
if __name__ == "__main__":
    student = Student("李四", 20)
    student.add_grade(85)
    student.add_grade(90)
    student.add_grade(88)
    print(student)

四、常见报错与完美解决方案

4.1 环境配置类问题

问题一:python不是内部或外部命令

报错现象:终端输入python提示:‘python’ 不是内部或外部命令

解决方案

  1. 重新安装Python,安装界面勾选 Add Python to PATH
  2. 手动配置环境变量:此电脑→属性→高级系统设置→环境变量→系统变量Path→添加Python安装根目录和Scripts目录

问题二:pip安装包失败

报错现象:ERROR: Could not find a version that satisfies the requirement

原因:官方源网络卡顿、访问超时

解决方案(清华镜像源)

# 临时使用国内镜像安装
pip install 包名 -i https://pypi.tuna.tsinghua.edu.cn/simple
# 永久配置清华镜像(推荐)
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple

4.2 代码运行类问题

问题三:文件编码错误

报错现象:UnicodeDecodeError: ‘gbk’ codec can’t decode byte

原因:Windows默认GBK编码,文件实际为UTF-8编码,编码不匹配

解决方案:手动指定UTF-8编码读取文件

# 标准写法(推荐)
with open("file.csv", "r", encoding="utf-8") as f:
    content = f.read()

# 容错写法(忽略异常编码字符)
with open("file.csv", "r", encoding="utf-8", errors="ignore") as f:
    content = f.read()

问题四:模块导入失败

报错现象:ModuleNotFoundError: No module named ‘xxx’

解决方案

import sys
# 查看模块搜索路径,确认环境是否匹配
print(sys.path)

# 终端安装缺失模块
# pip install 模块名

五、Python编程最佳实践

5.1 代码规范准则

# 1. 语义化变量名(拒绝无意义缩写)
student_name = "张三"  #  规范
a = "张三"              #  不规范

# 2. 函数添加文档字符串,方便后续维护
def calculate_average(numbers):
    """
    计算数字列表平均值
    :param numbers: 数字列表
    :return: 平均值
    """
    return sum(numbers) / len(numbers)

# 3. Python3.5+ 推荐类型注解
def greet(name: str) -> str:
    return f"你好, {name}!"

# 4. 必加异常捕获,避免程序崩溃
try:
    result = 10 / 0
except ZeroDivisionError as e:
    print(f"运行错误: {e}")

5.2 性能优化技巧

优化技巧实现说明优化效果
列表推导式替代传统for循环创建、筛选列表速度提升2倍
使用内置函数优先使用sum/max/min等内置方法速度提升3倍
规避全局变量优先使用局部变量,减少寻址耗时性能提升10%
生成器迭代数据处理超大CSV文件,不一次性加载全部数据内存占用减少90%

5.3 开发安全规范

六、本章总结与学习规划

6.1 核心知识点回顾

6.2 分阶段学习实践建议

学习阶段实践内容建议时长
入门复刻本文所有基础代码,熟练运行无报错1-2天
进阶自主编写CSV读写小工具,实现数据导入导出3-5天
高级优化代码性能,处理超大文件、异常数据场景1-2周

以上就是Python CSV文件读取与写入操作的基础指南的详细内容,更多关于Python CSV文件操作的资料请关注脚本之家其它相关文章!

您可能感兴趣的文章:
阅读全文