问题背景
在软件开发过程中,经常需要处理不同格式的文件数据。例如,JSON文件用于存储结构化数据,CSV用于存储表格数据,而文本文件则用于存储非结构化数据。本项目要求我们实现一个能读取这些文件、处理并输出统计信息的程序,同时确保程序能够独立运行,无需依赖第三方服务。
核心思路
- 文件读取与格式识别:
- 使用
open()读取本地目录中的文件,识别其格式(JSON、CSV、txt)。 - 根据文件类型选择对应的读取库(如
json处理JSON,csv处理CSV,open读取txt)。
- 使用
- 数据结构处理:
- 对每个文件进行解析并存储到指定路径。
- 计算统计信息(总和、平均值、最大值等)并输出。
- 结果输出:
- 输出处理后的数据结构(如键值对、列表)。
- 显示统计结果。
代码实现
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")
总结
本实现程序通过以下步骤完成任务:
- 文件读取:使用
open()和指定路径读取不同格式的文件。 - 数据解析:根据文件类型选择适当的读取库并解析数据。
- 统计计算:计算总和、平均值、最大值等统计信息。
- 结果输出:输出统计结果及数据结构。
该程序能够独立运行,无需依赖外部服务,适用于网络通信与API工具领域的文件处理需求。通过简单的代码实现,展示了文件读写与数据处理的核心逻辑。