您的位置:首页 > 健康 > 养生 > 动画制作软件下载_北京app开发公司排名_培训机构网站制作_市场营销的策划方案

动画制作软件下载_北京app开发公司排名_培训机构网站制作_市场营销的策划方案

2024/12/23 11:58:46 来源:https://blog.csdn.net/u014217137/article/details/142986512  浏览:    关键词:动画制作软件下载_北京app开发公司排名_培训机构网站制作_市场营销的策划方案
动画制作软件下载_北京app开发公司排名_培训机构网站制作_市场营销的策划方案

1. 需求

我有个文件夹里,有6个txt文档需要处理:

  • 读取
  • 数据分割
  • 根据不同类型保存为相应的文件
  • 计算平均值及最大值的任务

在这里插入图片描述
每个txt文档的数据格式为: 1 slot, 2 allocate quality, 3 display quality,4 delay,5 varQuality,6 throughput,7 size
在这里插入图片描述

2. 实现

2.1 Method 1

基本功能实现。

import osdef process_file(file_path, file_type):"""处理单个文件,包括读取数据、分割保存到不同文件、计算平均值和最大值。:param file_path: 文件路径:param file_type: 文件类型(教师或学生)"""# 创建空列表用于存储每种类型的数据data_lists = [[] for _ in range(7)]# 读取文件并提取数据with open(file_path, "r") as f:for line in f:values = line.strip("\n").split(',')for i, value in enumerate(values):data_lists[i].append(value)# 将每种类型的数据保存到对应的 txt 文件中for i, data_list in enumerate(data_lists):file_name = f"type_{i+1}_{file_type}.txt"with open(file_name, "w") as f:for data in data_list:if float(data) > 0:f.write(f"{data}\n")# 计算平均值和最大值for i in [5, 6]:  # 仅对第6和第7类型的数据进行计算file_path = f'./type_{i}_file_{file_type}.txt'with open(file_path, 'r') as file:lines = file.readlines()num_rows = len(lines)print(f"文件总共有 {num_rows} 行。")total = sum(float(line.strip()) for line in lines)average = total / num_rowsprint(f"平均值为:{average}")max_value = max(float(line.strip()) for line in lines)print("Max Value:", max_value)def main():current_directory = os.path.dirname(os.path.abspath(__file__))os.chdir(current_directory)# 处理第一个文件file1 = "./202410161554/LAQA_FairnessCom_teacher.txt"process_file(file1, "teacher")# 处理第二个文件file2 = "./202410161554/LAQA_FairnessCom_student_192.168.50.42.txt"process_file(file2, "student")if __name__ == "__main__":main()

结果展示

  • 分割,并根据不同类型,保存为对应的文件:

在这里插入图片描述

  • 计算平均值和最大值:

在这里插入图片描述

2.2 Method 2

这里优化一下代码,添加下面功能:

  • 使用glob.glob()函数来获取指定目录下的所有txt文件,然后遍历这些文件,对每个文件执行之前定义的处理逻辑。这样,程序就可以自动处理目录下的所有txt文件,而不需要手动指定文件名。
  • 在main函数中添加了一个file_count变量来记录处理的文件数量。每当process_file函数被调用处理完一个文件后,file_count就会增加1。最后,打印出总共处理了多少个文件。
  • 在打印信息时包含最上层文件名,这样就能清楚地知道当前处理的是哪一个文件里的数据。
import os
import globdef process_file(file_path):"""处理单个文件,包括读取数据、分割保存到不同文件、计算每种类型数据的平均值和最大值。:param file_path: 文件路径"""# 创建空列表用于存储每种类型的数据data_lists = [[] for _ in range(7)]# 读取文件并提取数据with open(file_path, "r") as f:for line in f:values = line.strip("\n").split(',')for i, value in enumerate(values):data_lists[i].append(value)# 将每种类型的数据保存到对应的 txt 文件中for i, data_list in enumerate(data_lists):file_name = f"type_{i+1}.txt"with open(file_name, "w") as f:for data in data_list:if float(data) > 0:f.write(f"{data}\n")# 对每种类型的数据计算平均值和最大值for i in range(7):  # 对所有7种类型的数据进行计算sub_file_path = f'./type_{i+1}.txt'with open(sub_file_path, 'r') as file:lines = file.readlines()num_rows = len(lines)print(f"文件 {file_path} 中 type_{i+1}.txt 文件总共有 {num_rows} 行")total = sum(float(line.strip()) for line in lines)average = total / num_rowsprint(f"平均值为:{average}")max_value = max(float(line.strip()) for line in lines)print("Max Value:", max_value)print("-------------------------------------")def main():current_directory = os.path.dirname(os.path.abspath(__file__))os.chdir(current_directory)# 获取202410161554目录下的所有txt文件files = glob.glob("202410161554/*.txt")# 初始化文件计数器file_count = 0# 遍历每个文件,处理文件for file_path in files:process_file(file_path)file_count += 1  # 处理完一个文件,计数器加1# 打印处理的文件总数print(f"总共处理了 {file_count} 个文件。")if __name__ == "__main__":main()

结果展示
在这里插入图片描述

2.3 Method 3

继续优化升级:
希望对每个文件的每种类型数据分别计算平均值和最大值,并且每个文件的结果都单独打印出来,我们需要稍微调整代码逻辑。
具体来说,我们可以在process_file函数中为每个文件创建一个结果字典,然后在main函数中打印每个文件的结果。这样,就可以清楚地看到每个文件中每种类型数据的统计信息。

import os
import globdef process_file(file_path):"""处理单个文件,包括读取数据、分割保存到不同文件、计算每种类型数据的平均值和最大值。:param file_path: 文件路径"""# 创建空列表用于存储每种类型的数据data_lists = [[] for _ in range(7)]# 读取文件并提取数据with open(file_path, "r") as f:for line in f:values = line.strip("\n").split(',')for i, value in enumerate(values):data_lists[i].append(value)results = {}  # 初始化每个文件的结果字典# 将每种类型的数据保存到对应的 txt 文件中for i, data_list in enumerate(data_lists):file_name = f"type_{i+1}.txt"with open(file_name, "w") as f:for data in data_list:if float(data) > 0:f.write(f"{data}\n")# 对每种类型的数据计算平均值和最大值lines = open(file_name, 'r').readlines()num_rows = len(lines)print(f"文件 {file_path} 中 type_{i+1}.txt 文件总共有 {num_rows} 行")total = sum(float(line.strip()) for line in lines)average = round(total / num_rows,2)print(f"平均值为:{average}")max_value = max(float(line.strip()) for line in lines)print("Max Value:", round(max_value,2))results[f"type_{i+1}"] = {"average": average, "max": max_value}print("-------------------------------------")return results    def main():current_directory = os.path.dirname(os.path.abspath(__file__))os.chdir(current_directory)# 获取202410161554目录下的所有txt文件files = glob.glob("202410161554/*.txt")# 遍历每个文件,处理文件for file_path in files:results = process_file(file_path)print(f"文件 {file_path} 的统计结果:")for key, value in results.items():print(f"{key}: 平均值 = {value['average']}, 最大值 = {value['max']}")print("-------------------------------------")if __name__ == "__main__":main()

结果展示
在这里插入图片描述

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com