如何按Department字段拆分CSV文件数据并写入对应文件?
按Department字段拆分CSV文件的实现方法
用Python内置的csv模块就能轻松实现这个需求,无需额外安装第三方库,代码逻辑简洁直接:
import csv # 原始CSV文件路径(请替换为你的实际文件路径) input_file = "employees.csv" # 存储各部门对应的文件句柄和CSV写入器 dept_handlers = {} try: with open(input_file, "r", newline="") as infile: # 用DictReader读取,支持按字段名直接访问数据 reader = csv.DictReader(infile) headers = reader.fieldnames for row in reader: dept = row["Department"] # 若该部门未创建对应文件,先初始化文件和写入器 if dept not in dept_handlers: out_file = open(f"{dept}.csv", "w", newline="") writer = csv.writer(out_file) # 先写入表头,保证输出CSV结构与原始文件一致 writer.writerow(headers) dept_handlers[dept] = (out_file, writer) # 将当前行数据写入对应部门的文件 dept_handlers[dept][1].writerow(row.values()) finally: # 确保所有打开的文件都被正确关闭,避免资源泄漏 for file, _ in dept_handlers.values(): file.close()
关键细节说明
- 用
DictReader读取文件,可以直接通过字段名(如row["Department"])获取对应值,比按索引取值更直观不易出错; - 每个部门的文件仅在第一次遇到该部门时创建,并写入表头,后续直接追加数据;
finally块强制关闭所有文件,即使代码执行中出现异常也不会遗漏。
注意事项
- 如果原始CSV文件不在当前工作目录,需要填写完整的文件路径;
- 若部门名称包含特殊字符(如斜杠、空格),建议先对名称做处理(例如把空格替换为下划线),避免文件创建失败;
- 运行代码前请确保当前目录有文件写入权限。
内容的提问来源于stack exchange,提问作者jan
相关产品推荐
相关产品推荐

