# 文件处理与数据统计实践:Python实现本地文件处理与结果输出



问题背景

在软件开发过程中,经常需要处理不同格式的文件数据。例如,JSON文件用于存储结构化数据,CSV用于存储表格数据,而文本文件则用于存储非结构化数据。本项目要求我们实现一个能读取这些文件、处理并输出统计信息的程序,同时确保程序能够独立运行,无需依赖第三方服务。


核心思路

  1. 文件读取与格式识别
    • 使用open()读取本地目录中的文件,识别其格式(JSON、CSV、txt)。
    • 根据文件类型选择对应的读取库(如json处理JSON,csv处理CSV,open读取txt)。
  2. 数据结构处理
    • 对每个文件进行解析并存储到指定路径。
    • 计算统计信息(总和、平均值、最大值等)并输出。
  3. 结果输出
    • 输出处理后的数据结构(如键值对、列表)。
    • 显示统计结果。

代码实现

import os
import json
import csv

def process_files(directory_path):
    # 构建目录路径
    files = []
    for filename in os.listdir(directory_path):
        if filename.endswith(".json"):
            file_path = os.path.join(directory_path, filename)
            files.append((filename, file_path))
        elif filename.endswith(".csv"):
            file_path = os.path.join(directory_path, filename)
            files.append((filename, file_path))
        elif filename.endswith(".txt"):
            file_path = os.path.join(directory_path, filename)
            files.append((filename, file_path))
        else:
            continue  # 无需处理非文件类型

    # 输出统计信息
    print("统计信息如下:")
    total_sum = 0
    average = 0
    max_value = float('-inf')
    min_value = float('inf')

    for (file_name, file_path) in files:
        with open(file_path, 'r') as f:
            if file_name.endswith('.json'):
                data = json.load(f)
                total_sum += sum(data.values())
                average = sum(data.values()) / len(data)
                max_value = max(max_value, max(data.values()))
                min_value = min(min_value, min(data.values()))
            elif file_name.endswith('.csv'):
                data = csv.reader(f)
                for row in data:
                    total_sum += sum(map(int, row))
                    average = sum(map(int, row)) / len(map(int, row))
                    max_value = max(max_value, max(map(int, row)))
                    min_value = min(min_value, min(map(int, row)))
            else:  # txt格式
                data = []
                for line in f:
                    data.append(line.strip())
                total_sum += len(data)
                average = len(data) / len(file_path)
                max_value = max(max_value, len(data))
                min_value = min(min_value, len(data))

    print("统计信息:")
    print(f"总和:{total_sum}")
    print(f"平均值:{average:.2f}")
    print(f"最大值:{max_value}")
    print(f"最小值:{min_value}")
    print("数据结构:")
    print("列表:", files)
    print("键值对:")
    for item in data:
        print(f"键:{item[0]},值:{item[1]}")

    return files

# 示例调用
if __name__ == "__main__":
    process_files("data")

总结

本实现程序通过以下步骤完成任务:

  1. 文件读取:使用open()和指定路径读取不同格式的文件。
  2. 数据解析:根据文件类型选择适当的读取库并解析数据。
  3. 统计计算:计算总和、平均值、最大值等统计信息。
  4. 结果输出:输出统计结果及数据结构。

该程序能够独立运行,无需依赖外部服务,适用于网络通信与API工具领域的文件处理需求。通过简单的代码实现,展示了文件读写与数据处理的核心逻辑。