社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

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

python • 2 天前 • 6 次点击  

在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
 
6 次点击