Py学习  »  Python

Python文件处理大全:CSV/Excel/JSON读写技巧

python • 1 月前 • 105 次点击  

在Python编程中,文件处理是一项基础且重要的技能。无论是数据分析、自动化脚本还是Web应用开发,都离不开对不同类型文件的读写操作。本文将详细介绍Python中处理CSV、Excel和JSON文件的技巧,帮助开发者高效地实现数据处理需求。

一、CSV文件处理

CSV(Comma-Separated Values)是一种常见的数据交换格式,由于其简单易用的特性,广泛应用于数据存储和传输。Python提供了内置的csv模块,使得CSV文件的读写操作变得简单高效。

1、基本读取操作

CSV文件的读取是数据处理的第一步。使用Python的csv模块可以轻松实现CSV文件的读取操作。在读取CSV文件时,通常使用csv.reader()函数创建一个读取器对象,然后遍历该对象来获取数据。

以下是一个简单的CSV文件读取示例,展示了如何打开CSV文件并逐行处理数据。

import csv

# 打开CSV文件进行读取
with open('data.csv''r', encoding='utf-8'as file:
    # 创建CSV读取器
    csv_reader = csv.reader(file)
    
    # 读取表头行
    header = next(csv_reader)
    print(f"CSV表头: {header}")
    
    # 遍历读取数据行
    for row in csv_reader:
        print(f"行数据: {row}")

# 运行结果示例:
# CSV表头: ['姓名', '年龄', '城市']
# 行数据: ['张三', '28', '北京']
# 行数据: ['李四', '32', '上海']
# 行数据: ['王五', '25', '广州']

2、使用DictReader读取CSV

如果希望以字典形式处理CSV数据,可以使用csv.DictReader类。该类将CSV文件的每一行转换为一个字典,其中列名作为键。这种方式使得数据访问更加直观,特别是当处理有明确字段名的CSV文件时。

以下代码展示了如何使用DictReader读取CSV文件。

import csv

# 使用DictReader读取CSV文件
with open('data.csv''r', encoding='utf-8'as file:
    # 创建DictReader对象
    dict_reader = csv.DictReader(file)
    
    # 遍历每一行数据
    for row in dict_reader:
        # 通过列名访问数据
        print( f"姓名: {row['姓名']}, 年龄: {row['年龄']}, 城市: {row['城市']}")

# 运行结果示例:
# 姓名: 张三, 年龄: 28, 城市: 北京
# 姓名: 李四, 年龄: 32, 城市: 上海
# 姓名: 王五, 年龄: 25, 城市: 广州

3、写入CSV文件

写入CSV文件同样简单直观。使用csv.writer()函数创建一个写入器对象,然后调用writerow()或writerows()方法写入数据。

以下代码展示了如何创建一个新的CSV文件并写入数据。

import csv

# 准备要写入的数据
header = ['产品名称''价格''库存']
products = [
    ['笔记本电脑''5999''50'],
    ['智能手机''3999''100'],
    ['平板电脑''2999''75']
]

# 打开文件进行写入
with open('products.csv''w', newline='', encoding='utf-8'as file:
    # 创建CSV写入器
    csv_writer = csv.writer(file)
    
    # 写入表头
    csv_writer.writerow(header)
    
    # 写入多行数据
    csv_writer.writerows(products)
    
    # 也可以逐行写入
    # for product in products:
    #     csv_writer.writerow(product)

print("CSV文件写入完成!")

# 运行结果:
# 创建了一个包含以下内容的products.csv文件:
# 产品名称,价格,库存
# 笔记本电脑,5999,50
# 智能手机,3999,100
# 平板电脑,2999,75

二、Excel文件处理

Excel是办公环境中最常用的电子表格软件之一,Python通过openpyxl库提供了强大的Excel文件处理能力。使用openpyxl,可以读取、修改和创建Excel文件,支持复杂的格式设置和数据处理。

1、读取Excel文件

读取Excel文件首先需要安装openpyxl库(使用pip install openpyxl命令)。然后,我们可以加载工作簿并访问其中的工作表和单元格。

以下代码展示了如何打开Excel文件并读取其中的数据,包括获取工作表列表、读取特定单元格和遍历数据行的操作。

import openpyxl

# 加载工作簿
workbook = openpyxl.load_workbook('sales_data.xlsx')

# 获取所有工作表名称
sheet_names = workbook.sheetnames
print(f"工作簿中的工作表: {sheet_names}")

# 选择一个工作表
sheet = workbook['Sheet1']  # 或者 workbook.active

# 获取工作表的尺寸
print(f"工作表尺寸: {sheet.dimensions}")

# 读取特定单元格的值
cell_value = sheet['A1'].value
print(f"A1单元格的值: {cell_value}")

# 遍历行数据
print("读取所有数据行:")
for row in sheet.iter_rows(min_row=2, values_only=True):  # 从第2行开始,跳过表头
    print(f"行数据: {row}")

# 运行结果示例:
# 工作簿中的工作表: ['Sheet1', 'Sheet2']
# 工作表尺寸: A1:D6
# A1单元格的值: 日期
# 读取所有数据行:
# 行数据: (2023-01-01, '区域A', '产品1', 150)
# 行数据: (2023-01-02, '区域B', '产品2', 200)
# 行数据: (2023-01-03, '区域A', '产品3', 120)

2、创建和写入Excel文件

创建新的Excel文件或修改现有文件是数据处理中的常见需求。openpyxl使我们能够创建工作簿、添加工作表以及写入数据。

以下代码展示了如何创建一个新的Excel文件,添加数据并应用基本格式。

import openpyxl
from openpyxl.styles import Font, Alignment, PatternFill

# 创建新的工作簿
workbook = openpyxl.Workbook()

# 获取活动工作表
sheet = workbook.active
sheet.title = "销售报表"

# 写入表头
headers = ['日期''产品''销售量''金额']
for col_num, header in enumerate(headers, 1):
    cell = sheet.cell(row=1, column=col_num)
    cell.value = header
    # 设置表头样式
    cell.font = Font(bold=True)
    cell.alignment = Alignment(horizontal='center')
    cell.fill = PatternFill(start_color="DDDDDD", end_color="DDDDDD", fill_type="solid")

# 写入数据
sales_data = [
    ['2023-05-01''iPhone 13'1079990],
    ['2023-05-01''MacBook Pro'599950],
    ['2023-05-02''AirPods'2025980],
    ['2023-05-03''iPad'839992]
]

for row_num, row_data in enumerate(sales_data, 2):  # 从第2行开始
    for col_num, cell_value in enumerate(row_data, 1):
        sheet.cell(row=row_num, column=col_num).value = cell_value

# 设置列宽
for col in ['A''B''C''D']:
    sheet.column_dimensions[col].width = 15

# 保存工作簿
workbook.save('sales_report.xlsx')
print("Excel文件创建完成!")

# 运行结果:
# 创建了一个名为sales_report.xlsx的Excel文件
# 文件包含带有格式的表头和4行销售数据

三、JSON文件处理

JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,因其简洁易读的特性在Web应用和API中广泛应用。Python的json模块提供了方便的JSON数据处理功能,能够实现Python对象和JSON数据之间的转换。

1、读取JSON文件

读取JSON文件是处理Web API返回数据或配置文件的常见操作。Python的json.load()函数可以将JSON文件内容转换为Python对象。

以下代码展示了如何读取和解析JSON文件内容。

import json

# 打开并读取JSON文件
with open('config.json''r', encoding='utf-8'as file:
    # 解析JSON数据为Python对象
    config_data = json.load(file)

# 访问JSON数据
print(f"应用名称: {config_data['app_name']}")
print(f"版本号: {config_data['version']}")

# 访问嵌套的JSON数据
database_config = config_data['database']
print(f"数据库类型: {database_config['type']}")
print(f"数据库主机: {database_config['host']}")
print(f"数据库端口: {database_config['port']}")

# 遍历JSON数组
print("支持的特性:" )
for feature in config_data['features']:
    print(f"- {feature}")

# 运行结果示例(假设config.json包含相应内容):
# 应用名称: 我的应用
# 版本号: 1.0.0
# 数据库类型: MySQL
# 数据库主机: localhost
# 数据库端口: 3306
# 支持的特性:
# - 用户管理
# - 数据分析
# - 报表生成

2、创建和写入JSON文件

将Python对象转换为JSON格式并保存到文件是数据序列化的重要应用。使用json.dump()函数可以实现这一功能。

以下代码展示了如何将Python字典转换为JSON并写入文件,同时设置适当的格式以提高可读性。

import json

# 准备要转换为JSON的Python数据
user_data = {
    'users': [
        {
            'id'1,
            'name''张三',
            'email''zhangsan@example.com',
            'is_active'True,
            'roles': ['admin''editor']
        },
        {
            'id'2,
            'name''李四',
             'email''lisi@example.com',
            'is_active'False,
            'roles': ['viewer']
        }
    ],
    'total'2,
    'page'1,
    'per_page'10
}

# 将Python对象写入JSON文件
with open('users.json''w', encoding='utf-8'as file:
    # 使用indent参数美化输出,ensure_ascii=False确保中文正确显示
    json.dump(user_data, file, indent=4, ensure_ascii=False)

print("JSON文件创建完成!")

# 运行结果:
# 创建了一个包含用户数据的JSON文件,格式化后的内容易于阅读

四、实际应用案例

以下这个例子演示了如何从CSV文件读取数据,进行处理后保存为Excel文件,同时生成JSON格式的摘要报告。

import csv
import json
import openpyxl
from datetime import datetime

def process_sales_data(csv_file, excel_output, json_output):
    """处理销售数据,并输出Excel和JSON报告"""
    
    # 读取CSV销售数据
    sales_data = []
    with open(csv_file, 'r', encoding='utf-8'as file:
        csv_reader = csv.DictReader(file)
        for row in csv_reader:
            sales_data.append(row)
    
    # 数据处理:计算每种产品的总销售额
    product_sales = {}
    for sale in sales_data:
        product = sale['产品']
        amount = float(sale['销售额'])
        if product in product_sales:
            product_sales[product] += amount
        else:
            product_sales[product] = amount
    
    # 创建Excel报告
    workbook = openpyxl.Workbook()
    sheet = workbook.active
    sheet.title = "销售分析"
    
    # 写入表头
    sheet['A1'] = "产品"
    sheet['B1'] = "总销售额"
    
    # 写入数据
    row = 2
    for product, total in product_sales.items():
        sheet[f'A{row}'] = product
        sheet[f'B{row}'] = total
        row += 1
    
    # 保存Excel文件
    workbook.save(excel_output)
    
    # 创建JSON摘要报告
    summary = {
        'report_date': datetime.now().strftime('%Y-%m-%d'),
        'total_products': len(product_sales),
        'total_sales': sum(product_sales.values()),
        'product_breakdown': [
            {'product': product, 'amount': amount}
            for product, amount in product_sales.items()
        ]
    }
    
    # 保存JSON文件
    with open(json_output, 'w', encoding='utf-8'as file:
        json.dump(summary, file, indent=4, ensure_ascii=False)
    
    return len(sales_data), len(product_sales)

# 使用示例
processed_rows, product_count = process_sales_data(
    'monthly_sales.csv'
    'sales_report.xlsx'
    'sales_summary.json'
)
print(f"处理了{processed_rows}条销售记录,涉及{product_count}种产品。")
print("Excel报告和JSON摘要已生成!")

# 运行结果示例:
# 处理了156条销售记录,涉及12种产品。
# Excel报告和JSON摘要已生成!

总结

Python提供了强大且灵活的文件处理能力,使得开发者可以高效地处理CSV、Excel和JSON等不同类型的文件。通过本文介绍的技巧,可以轻松实现数据的读取、处理和输出,满足各种实际应用场景的需求。对于CSV文件,Python的csv模块提供了简单直观的接口,适用于处理结构化的表格数据。Excel文件处理则依赖于openpyxl等第三方库,支持复杂的电子表格操作和格式设置。JSON文件处理则利用Python内置的json模块,实现了Python对象与JSON数据之间的无缝转换。在实际开发中,常常需要结合使用这些文件处理技术,实现从数据采集、处理到结果展示的完整流程。

如果你觉得文章还不错,请大家 点赞、分享、留言 下,因为这将是我持续输出更多优质文章的最强动力!


我们还为大家准备了Python资料,感兴趣的小伙伴快来找我领取一起交流学习哦!

图片

往期推荐

历时一个月整理的 Python 爬虫学习手册全集PDF(免费开放下载)

Beautiful Soup快速上手指南,从入门到精通(PDF下载)

Python基础学习常见的100个问题.pdf(附答案)

124个Python案例,完整源代码!

30 个Python爬虫的实战项目(附源码)

从入门到入魔,100个Python实战项目练习(附答案)!

80个Python数据分析必备实战案例.pdf(附代码),完全开放下载

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/182197
 
105 次点击