Python读写CSV文件流程及异常解决
CSV(Comma-Separated Values)是一种通用的文件格式,可用于在不同的应用程序之间共享数据。Python提供了CSV模块来读写CSV文件,下面我们来详细讲解Python读写CSV文件的流程。
1. 导入CSV模块
Python的CSV模块内置于标准库中,所以不需要额外安装。可以通过以下代码导入CSV模块:
import csv
2. 读取CSV文件
CSV文件是由行和列组成的表格数据,可以使用csv.reader()方法读取CSV文件。下面是读取CSV文件的基本流程:
import csv
# 打开CSV文件
with open('employee.csv', newline='') as csvfile:
# 读取CSV文件内容
reader = csv.reader(csvfile)
# 遍历CSV文件中的每一行
for row in reader:
print(row)
在打开CSV文件时,需要指定newline=”参数,来确保每行数据能够正确读取。读取CSV文件后,通过for循环遍历每一行数据,打印出每一行的内容。
3. 写入CSV文件
Python的CSV模块也提供了写入CSV文件的功能。下面是写入CSV文件的基本流程:
import csv
# 创建CSV文件
with open('employee.csv', mode='w', newline='') as csvfile:
# 写入CSV文件内容
writer = csv.writer(csvfile)
writer.writerow(['Name', 'Age', 'Department'])
writer.writerow(['Lucy', '28', 'Sales'])
writer.writerow(['Tom', '35', 'Marketing'])
在创建CSV文件时,先指定文件名和打开模式。打开模式中,mode=’w’表示创建一个新的CSV文件,如果文件已经存在,则会覆盖掉原有的文件内容。写入CSV文件的数据可以通过writerow()方法实现。在这个例子中,我们写入了三行数据,包括姓名、年龄和部门信息。
4. 异常解决
使用CSV模块时,可能会遇到一些异常情况,需要通过异常处理来解决。例如,当CSV文件不存在时,会引发FileNotFoundError异常。下面是如何处理这种异常:
import csv
try:
# 打开CSV文件
with open('employee.csv', newline='') as csvfile:
# 读取CSV文件内容
reader = csv.reader(csvfile)
# 遍历CSV文件中的每一行
for row in reader:
print(row)
except FileNotFoundError:
print('The CSV file does not exist.')
在这个例子中,我们使用try…except语句来捕获可能发生的异常。如果CSV文件不存在,则会抛出FileNotFoundError异常,我们通过except语句来捕获并打印出异常信息。
示例说明
下面我们提供两个例子来说明CSV模块的使用方法。
例子1:分析球员数据
假设有一个CSV文件,存储了多个篮球球员的数据,包括姓名、年龄、身高和得分。我们可以使用CSV模块来读取这个文件,并对球员数据进行分析。
import csv
# 定义球员类
class Player:
def __init__(self, name, age, height, score):
self.name = name
self.age = age
self.height = height
self.score = score
# 读取CSV文件,并解析数据
players = []
with open('players.csv', newline='') as csvfile:
reader = csv.reader(csvfile)
for row in reader:
name, age, height, score = tuple(row)
player = Player(name, int(age), int(height), int(score))
players.append(player)
# 对球员数据进行分析
total_height = 0
max_score_player = players[0]
for player in players:
total_height += player.height
if player.score > max_score_player.score:
max_score_player = player
print('Average height:', total_height / len(players))
print('The player with the highest score:', max_score_player.name)
在这个例子中,我们读取了一个名为players.csv的CSV文件,并将每个球员的数据解析为Python对象。然后,我们对球员数据进行了分析,计算出球员的平均身高,并找出得分最高的球员。
例子2:导出用户订单数据
假设有一个在线商店的订单系统,订单数据存储在MySQL数据库中。我们需要导出订单数据,并保存为CSV文件格式,以便与其他应用程序共享数据。
import csv
import mysql.connector
# 连接MySQL数据库
mydb = mysql.connector.connect(
host="localhost",
user="username",
password="password",
database="mydatabase"
)
# 查询订单数据
mycursor = mydb.cursor()
mycursor.execute("SELECT * FROM orders")
# 导出订单数据到CSV文件
with open('orders.csv', mode='w', newline='') as csvfile:
writer = csv.writer(csvfile)
# 写入CSV文件标题
writer.writerow(['Order ID', 'Customer Name', 'Product Name', 'Order Date'])
# 遍历订单数据,并写入CSV文件
for row in mycursor:
writer.writerow(row)
# 关闭MySQL数据库连接
mydb.close()
在这个例子中,我们使用mysql.connector模块连接到MySQL数据库,并查询出订单数据。然后,我们使用CSV模块将查询结果导出为CSV文件。注意,我们使用writerow()方法来先写入CSV文件的标题,然后遍历每一行数据,并将其写入CSV文件中。
这两个例子只是CSV模块使用的冰山一角,通过它们我们可以掌握CSV模块的基本使用方法并了解如何解决可能遇到的异常情况。