Python编程实验五:文件的读写操作

目录

一、实验目的与要求

二、实验内容

三、主要程序清单和程序运行结果

第1题

第2题

四、实验结果分析与体会


一、实验目的与要求

(1)通过本次实验,学生应掌握与文件打开、关闭相关的函数,以及与读写操作相关的常用方法的使用;
(2)理解基于文件的词频统计以及数据分析的基本思路,能根据问题需要灵活选择合适的数据结构;
(3)综合应用所学知识实现对问题的编程求解;
(4)按照实验题目要求独立正确地完成实验内容(编写、调试算法程序,提交程序清单及及相关实验数据与运行结果)

二、实验内容

使用Python语言在Jupyter Notebook环境下编程完成下列题目的要求:

1、实验5素材文件夹下的文件 data.txt 是一个来源于网上的技术信息资料。

问题1:用 Python 语言中文分词第三方库 jieba 对文件 data.txt 进行分词,并选择长度大于等于3个字符的关键词,写入文件 out1.txt , 每行一个关键词,各行的关键词不重复,输出顺序不做要求,例如:
人工智能
科幻小说
……

问题2:对实验5素材文件夹下的文件 data.txt 进行分词,对长度不少于3个字符的关键词,统计出现的次数,按照出现次数由大到小的顺序输出到文件 out2.txt ,每行一个关键词及其出现次数,例如:
科学家:2
达特茅斯:1
……

2、某班学生评选一等奖学金,学生的10门主干课成绩存在于实验5素材文件夹下文件 score.txt 中, 每行为一个学生的信息,分别记录了学生学号、姓名以及10门课成绩,格式如下:

1820161043 郑珉镐 68 66 83 77 56 73 61 69 66 78
1820161044 沈红伟 91 70 81 91 96 80 78 91 89 94
……

从这些学生中选出奖学金候选人,条件是:①总成绩排名在前10名;②全部课程及格(成绩大于等于60)。

问题1:给出按总成绩从高到低排序的前10名学生名单,并写入文件 candid1.txt ,每行记录一个学生的信息,分别为学生学号、姓名以及10门课成绩。

问题2:读取文件 candid1.txt ,从中选出候选人,并将学号和姓名写入文件 candid2.txt 格式如下:

1010112161722张三
1010112161728李四
......

实验素材下载地址:https://download.csdn.net/download/Morse_Chen/88887343?spm=1001.2014.3001.5503

三、主要程序清单和程序运行结果

第1题

1、实验5素材文件夹下的文件 data.txt 是一个来源于网上的技术信息资料。

问题1:用 Python 语言中文分词第三方库 jieba 对文件 data.txt 进行分词,并选择长度大于等于3个字符的关键词,写入文件 out1.txt , 每行一个关键词,各行的关键词不重复,输出顺序不做要求,例如:
人工智能
科幻小说
……

问题2:对实验5素材文件夹下的文件 data.txt 进行分词,对长度不少于3个字符的关键词,统计出现的次数,按照出现次数由大到小的顺序输出到文件 out2.txt ,每行一个关键词及其出现次数,例如:
科学家:2
达特茅斯:1
……

import jiebawith open("data.txt", "r") as f:content = f.read()
words = set()
seg_list = jieba.cut(content)
for word in seg_list:if len(word) >= 3:words.add(word)
with open("out1.txt", "w") as f:for word in words:f.write(word + "\n")from collections import Counterwith open("data.txt", "r") as f:content = f.read()
words = []
seg_list = jieba.cut(content)
for word in seg_list:if len(word) >= 3:words.append(word)
word_count = Counter(words)
sorted_word_count = sorted(word_count.items(), key=lambda x: x[1], reverse=True)
with open("out2.txt", "w") as f:for word, count in sorted_word_count:f.write(f"{word}:{count}\n")

        使用了jieba库来进行文本处理,并将处理结果写入文件。

        首先,打开一个名为 "data.txt" 的文件,并读取文件内容。然后使用 jieba.cut() 方法对文本进行分词,得到分词结果。接着,它遍历分词结果,并将长度大于等于3的词添加到一个名为 "words" 的集合中,并将这些词写入名为 "out1.txt" 的文件中。

        接下来,它再次打开 "data.txt" 文件并读取内容,然后使用 jieba.cut() 方法对文本进行分词,得到分词结果。同样地,它筛选出长度大于等于3的词并将它们添加到名为 "words" 的列表中。然后使用 collections.Counter() 方法统计每个词出现的次数,将统计结果按词频排序,并将排序后的结果写入名为 "out2.txt" 的文件中。

运行结果: 

    ……     

    ……     

第2题

2、某班学生评选一等奖学金,学生的10门主干课成绩存在于实验5素材文件夹下文件 score.txt 中, 每行为一个学生的信息,分别记录了学生学号、姓名以及10门课成绩,格式如下:

1820161043 郑珉镐 68 66 83 77 56 73 61 69 66 78
1820161044 沈红伟 91 70 81 91 96 80 78 91 89 94
……

从这些学生中选出奖学金候选人,条件是:①总成绩排名在前10名;②全部课程及格(成绩大于等于60)。

问题1:给出按总成绩从高到低排序的前10名学生名单,并写入文件 candid1.txt ,每行记录一个学生的信息,分别为学生学号、姓名以及10门课成绩。

问题2:读取文件 candid1.txt ,从中选出候选人,并将学号和姓名写入文件 candid2.txt 格式如下:

1010112161722张三
1010112161728李四
......

with open("score.txt", "r") as f:content = f.readlines()
students = []
for line in content:info = line.split()student_id = info[0]student_name = info[1]scores = list(map(int, info[2:]))total_score = sum(scores)students.append((student_id, student_name, scores, total_score))sorted_students = sorted(students, key=lambda x: x[3], reverse=True)with open("candid1.txt", "w") as f:for student in sorted_students[:10]:student_id, student_name, scores, _ = studentf.write(f"{student_id} {student_name} {' '.join(map(str, scores))}\n")with open("candid1.txt", "r") as f:content = f.readlines()
selected_students = []
for line in content:info = line.split()student_id = info[0]student_name = info[1]scores = list(map(int, info[2:]))if all(score >= 60 for score in scores):selected_students.append((student_id, student_name))with open("candid2.txt", "w") as f:for student in selected_students:student_id, student_name = studentf.write(f"{student_id} {student_name}\n")

        这段代码首先打开名为 "score.txt" 的文件,读取文件内容并按行存储在列表 content 中。然后,它遍历 content 列表中的每一行,将每行按空格分割成一组信息,包括学生ID、学生姓名和各科成绩。成绩部分被转换为整数类型并计算总成绩,然后将学生的信息以元组形式存储在 students 列表中。

        接着,代码对 students 列表中的学生信息根据总成绩进行降序排序,得到了 sorted_students 列表。

        然后,代码打开名为 "candid1.txt" 的文件,将排名前10的学生信息写入文件中,每行包括学生ID、学生姓名和各科成绩。

        接着,代码再次打开 "candid1.txt" 文件,读取文件内容并按行存储在列表 content 中。然后,它遍历 content 列表中的每一行,将每行按空格分割成一组信息,包括学生ID、学生姓名和各科成绩。然后判断该学生各科成绩是否都大于等于60分,如果是,则将该学生的学生ID和学生姓名以元组形式存储在 selected_students 列表中。

最后,代码将符合条件的学生信息写入名为 "candid2.txt" 的文件中,每行包括学生ID和学生姓名。

运行结果:

四、实验结果分析与体会

        通过本次实验,掌握了与文件打开、关闭相关的函数,以及与读写操作相关的常用方法的使用;理解基于文件的词频统计以及数据分析的基本思路。在进行文件读写操作时,及时打开和关闭文件是非常重要的,特别是在写操作完成后,一定要确保文件被正确关闭,以避免数据丢失或损坏。在文件操作过程中,可能会遇到各种异常情况,比如文件不存在、权限问题等。因此,对于文件操作,充分的异常处理是必不可少的,这可以通过 try-except 语句来实现。

        Python 提供了多种文件读写模式,包括 "r"(只读)、"w"(只写)、"a"(追加)、"r+"(读写)等。在选择文件模式时,需要根据具体的需求来决定使用哪种模式,以确保操作的正确性和安全性。在文件读写操作中,尤其是处理文本文件时,需要注意文件的编码格式。在打开文件时可以指定编码方式,以便正确地读取和写入文件内容。文件读写过程中,文件指针的位置是非常重要的。在读取文件内容或者进行写入操作时,需要注意文件指针的位置,以确保读写操作的准确性。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/2815636.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

【亚马逊云科技】通过Amazon CloudFront(CDN)快速访问资源

文章目录 前言一、应用场景二、【亚马逊云科技】CloudFront(CDN)的优势三、入门使用总结 前言 前面有篇文章我们介绍了亚马逊云科技的云存储服务。云存储服务主要用于托管资源,而本篇文章要介绍的CDN则是一种对托管资源的快速访问服务&#…

Py2neo查询neo4j周杰伦数据库中的节点、关系和路径教程

文章目录 py2neo介绍连接Neo4j数据库py2neo查询图数据库neo4j数据概览使用NodeMatcher查询节点使用RelationshipMatcher查询关系 通过执行Cypher语句查询 py2neo介绍 Neo4j是一款开源图数据库,Py2neo提供了使用Python语言访问Neo4j的接口。本文介绍了使用Py2neo的N…

python脚本实现全景站点矩阵转欧拉角

效果 脚本 import re import numpy as np import math import csv from settings import * # 以下是一个示例代码,可以输入3*3旋转矩阵,然后输出旋转角度:# ,输入3*3旋转矩阵# 计算x,y,z旋转角def rotation_matrix_to_euler_angles(R):

使用uniapp开发时自定义tabbar

预览图: 一、配置page.jsong中的tabbar(这一步是必须的,因为我们在使用uni.switchTab()时必须要用到) "tabBar": {"list": [{"pagePath": "pages/index/index","iconPath": &…

CI/CD笔记.Gitlab系列.`gitlab-ci.yml`中的头部关键字

CI/CD笔记.Gitlab系列 gitlab-ci.yml中的头部关键字 - 文章信息 - Author: 李俊才 (jcLee95) Visit me at: https://jclee95.blog.csdn.netEmail: 291148484163.com. Shenzhen ChinaAddress of this article:https://blog.csdn.net/qq_28550263/article/details/136342897HuaW…

Arduino ESP32下载太慢终极解决办法

打开百度网盘下载你需要的软件包到Arduino15\staging\packages目录下,重新在包管理器中安装即可。 链接:https://pan.baidu.com/s/1LKPKuLxkw9xgCrPxTF6alQ?pwdckms 提取码:ckms 失效请留言 附文件列表: xtensa-esp32-elf-gcc…

Lodop关联内容分页打印

文章目录 前言一、打印项关联二、table内嵌条形码总结 前言 Lodop打印插件使用系列,本文交流下比较常用的需求。在打印的页面里面有2个或多个table,它们的高度不固定。这种情况也要实现分页。大概2个方向的思路,思路1自行计算高度&#xff0…

强化学习Agent系列(二)——PyGame虚拟环境创建与Python 贪吃蛇Agent制作实战教学

文章目录 一、前言二、gymnasium 简单虚拟环境创建1、gymnasium介绍2、gymnasium 贪吃蛇简单示例 三、基于gymnasium创建的虚拟环境训练贪吃蛇Agent1、虚拟环境2、虚拟环境注册3、训练程序4、模型测试 三、卷积虚拟环境1、卷积神经网络虚拟环境2、训练代码 一、前言 大家好&am…

【MySQL】主从同步原理、分库分表

主从同步原理 1. 主从同步原理 MySQL 经常先把命令拷入硬盘的日志,再执行日志的命令,这样的好处: 日志的位置固定,拷入硬盘的开销不大;将命令先准备好,而不是边读边执行,性能更好,…

GIS之深度学习01:检测电脑是否包含英伟达GPU

GPU(Graphics processing unit),中文全称图形处理器,我们听说的更多的CPU全称是central processing unit,中央处理器。研究深度学习和神经网络大都离不开GPU,在GPU的加持下,我们可以更快的获得模…

Golang使用Swag搭建api文档

1. 简介 Gin是Golang目前最为常用的Web框架之一。 公司项目验收需要API接口设计说明书(Golang后端服务基于Gin框架编写),编写任务自然就落到了我们研发人员身上。 项目经理提供了文档模板,让我们参考模板来手动编写,要…

幻兽帕鲁(1.5.0)可视化管理工具(0.5.7 docker版)安装教程

文章目录 局域网帕鲁服务器部署教程帕鲁服务可视化工具安装配置服务器地址(可跳过)使用工具管理面板 1.5.0服务端RCON错误1.5.0服务端无法启动RCON端口 解决方法第一步:PalWorldSettings.ini配置第二步:修改PalServer.sh配置 局域…

如何一步一步地优化LVGL的丝滑度

经过一番周折将LVGL移植到了STM32F407单片机上,底层驱动的LCD是st7789,移植时的条件和环境如下: ●LVGL用的是单缓冲,一次刷新10行; ●刷新函数用的是最原始的一个一个打点的方式; ●ST7789底层发送数据用的…

抖音橱窗怎么关闭?

路径:【抖音APP-我-电商带货-全部工具-账号管理-权限与账户-关闭电商权限】关闭橱窗带货权限。 0保、原0粉达人关闭电商权限后,后续均需要满足页面提示要求才可以进行电商权限的开通,建议慎重操作。

2024年阿里云优惠券领取及使用教程_无门槛优惠券

阿里云优惠代金券领取入口,阿里云服务器优惠代金券、域名代金券,在领券中心可以领取当前最新可用的满减代金券,阿里云百科aliyunbaike.com分享阿里云服务器代金券、领券中心、域名代金券领取、代金券查询及使用方法: 阿里云优惠券…

Xinstall助力社交产品,轻松实现用户关系链归因

在如今的社交网络时代,人与人之间的联系变得越来越紧密。社交产品作为连接人与人之间的桥梁,其重要性不言而喻。然而,如何让用户在使用社交产品时更快速地建立起社交联系,一直是社交产品开发者们关注的焦点。 Xinstall作为一款专…

智能销售数据大屏:决胜市场的数字利器

在数字化浪潮席卷全球的今天,数据已经成为企业决策的核心要素。尤其对于销售团队来说,如何快速、准确地把握市场动态,分析客户行为,成为决定胜负的关键。而智能销售数据大屏,正是这样一款能够帮助企业洞察市场脉络、决…

如何用GPT高效地处理文本、文献查阅、PPT编辑、编程、绘图和论文写作?

原文链接:如何用GPT高效地处理文本、文献查阅、PPT编辑、编程、绘图和论文写作?https://mp.weixin.qq.com/s?__bizMzUzNTczMDMxMg&mid2247594986&idx4&sn970f9ba75998f2dd9fa5707d1611a6cc&chksmfa82320dcdf5bb1bdf58c20686d4eb209770e68253ed90d…

StarRocks实战——滴滴OLAP的技术实践与发展方向

原文大佬的这篇StarRocks实践文章整体写的很深入,介绍了StarRocks数仓架构设计、物化视图加速实时看板、全局字典精确去重等内容,这里直接摘抄下来用作学习和知识沉淀。 目录 一、背景介绍 1.1 滴滴OLAP的发展历程 1.2 OLAP引擎存在的痛点 1.2.1 运维…

高通 AI Hub 上手指南

文章介绍 2月26日,高通在2024年世界移动通信大会(MWC2024)上发布高通AI Hub, AI Hub 简化了AI 模型部署到边缘设备的过程。可以利用AI-hub云端托管 Qualcomm 设备上,在几分钟内完成模型的优化、验证和部署。本文以Pyto…