Python之文件与文件夹操作及 pytest 测试习题

目录

    • 1、文本文件读写基础。编写程序,在 当前目录下创建一个文本文件 test.txt,并向其中写入字符串 hello world。
    • 2、编写一个程序 demo.py,要求运行该程序后,生成 demo_new.py 文件,其中内容与demo.py 一样,只是在每一行的后面加上行号。要求行号以#开始,并且所有行的#符号垂直对齐
    • 3、编写程序,使用pickle模块将包含学生成绩的字典保存为二进制文件,然后再读取内容并显示。
    • 4、计算文件 MD5 的值。MD5 是一种常用的哈希算法,不论原始信息长度如何,总是计算得到一个固定长度的二进制字符串。该算法对原文的改动非常敏感,因此该算法被用于检验信息是否被修改过,用于文件完整性检验,或者数字签名。
    • 5、统计三国演义中高频词

1、文本文件读写基础。编写程序,在 当前目录下创建一个文本文件 test.txt,并向其中写入字符串 hello world。

from pathlib import Path
currentPath=Path.cwd()path=currentPath/'test.txt'
with path.open('w') as f:f.write('hello world')

在这里插入图片描述

2、编写一个程序 demo.py,要求运行该程序后,生成 demo_new.py 文件,其中内容与demo.py 一样,只是在每一行的后面加上行号。要求行号以#开始,并且所有行的#符号垂直对齐

with open('demo01.py','r') as f:content=f.readlines()maxlength=len(max(content,key=len))# enumerate同时列出数据和下标
# ljust返回一个原字符串左对齐
with open('demo_new.py','w') as f2:for i,line in enumerate(content):f2.write(line.rstrip().ljust(maxlength)+'#'+str(i+1)+'\n')

在这里插入图片描述

3、编写程序,使用pickle模块将包含学生成绩的字典保存为二进制文件,然后再读取内容并显示。

import pickle as p
student={'大明',10101,'二班','班长'}
# wb二进制写方式打开文件,只能写文件
# rb二进方式读取文件
# dumps读入数据并序列化
# loads以数列化数据读出
with open('student.dat','wb') as s:data=p.dumps(student)s.write(data)s.close()
with open('student.dat','rb') as ss:dirt=ss.read()ss.close()dirt=p.loads(dirt)print(dirt)

在这里插入图片描述

4、计算文件 MD5 的值。MD5 是一种常用的哈希算法,不论原始信息长度如何,总是计算得到一个固定长度的二进制字符串。该算法对原文的改动非常敏感,因此该算法被用于检验信息是否被修改过,用于文件完整性检验,或者数字签名。

Python 标准库 hashlib 中 md5()函数可以用来计算字节串的 MD5 值。编写一个程序,
要求输入一个文件名,然后输出该文件的 MD5 值,如果文件不存在就给出相应提示

import hashlib as ha
import os
# hexdigest()用于获取哈希对象的十六进制摘要。
file=input("输入文件路径:")if os.path.exists(file):with open(file,'r') as f:data=f.read()data_md5=ha.md5(data.encode(encoding='UTF-8')).hexdigest()print(data_md5)
else:print("没有该文件")

在这里插入图片描述

5、统计三国演义中高频词

下载《三国演义》电子文本(也可从烟台大学本课程教学网站实验栏目中下载)。使用
jieba 库对文件“三国演义.txt”中的文本进行分词,并对每个词出现的次数进行统计,将词频
最高的前三个词语输出。运行效果如下。
输入:无
输出:[(934, ‘曹操’), (831, ‘孔明’), (761, ‘将军’)]

import jieba
txt = open("sanguo.txt", "r", encoding = "utf-8").read()
words = jieba.lcut(txt)
counts = {}
for word in words:if len(word) == 1:continueelse:counts[word] = counts.get(word, 0) + 1
items = list(counts.items())
items.sort(key = lambda x:x[1], reverse = True)
for i in range(3):word, count = items[i]# 第一个字符宽度10,第二个字符宽度5。格式化输出print("{0:<10}{1:>5}".format(word, count))

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

竞赛 题目:基于LSTM的预测算法 - 股票预测 天气预测 房价预测

文章目录 0 简介1 基于 Keras 用 LSTM 网络做时间序列预测2 长短记忆网络3 LSTM 网络结构和原理3.1 LSTM核心思想3.2 遗忘门3.3 输入门3.4 输出门 4 基于LSTM的天气预测4.1 数据集4.2 预测示例 5 基于LSTM的股票价格预测5.1 数据集5.2 实现代码 6 lstm 预测航空旅客数目数据集预…

Ubuntu环境下以编译源码的方式安装Vim

目录 1. Ubuntu环境 2. 下载编译vim 2.1 效果截图 3. 配置环境变量 1. Ubuntu环境 Linux chris-166 6.2.0-36-generic #37~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Mon Oct 9 15:34:04 UTC 2 x86_64 x86_64 x86_64 GNU/Linux 2. 下载编译vim // 源码下载 chris_166chris-16…

【数据结构】手撕双向链表

目录 前言 1. 双向链表 带头双向循环链表的结构 2. 链表的实现 2.1 初始化 2.2 尾插 2.3 尾删 2.4 头插 2.5 头删 2.6 在pos位置之前插入 2.7 删除pos位置 3.双向链表完整源码 List.h List.c 前言 在上一期中我们介绍了单链表&#xff0c;也做了一些练习题&…

langchain实战-hello world

一、LangChain简介 github地址&#xff1a; GitHub - langchain-ai/langchain: ⚡ Building applications with LLMs through composability ⚡ LangChain是一个用于开发由语言模型支持的应用程序的框架。它使应用程序能够&#xff1a; 具有上下文感知能力&#xff1a;将语言模…

【树与二叉树的转换,哈夫曼树的基本概念】

文章目录 树与二叉树的转换将二叉树转化为树森林与二叉树的转化&#xff08;二叉树与多棵树之间的关系&#xff09;二叉树转换为森林森林的先序遍历1&#xff09;先序遍历2&#xff09;后序遍历 哈夫曼树的基本概念森林转换成二叉树&#xff08;二叉树与多棵树的关系&#xff0…

修改Conda虚拟环境默认位置失败——解决方案

修改虚拟环境默认安装位置依然❌ 偶然遇到conda创建虚拟环境创建失败的问题&#xff0c;按照教程修改.condarc文件中 envs_dirs:- E:\miniconda3\envs依然无法更改虚拟环境默认安装位置。 解决方案 找到想更改的虚拟环境文件位置&#xff0c;检查确认是否有写入权限&#…

在Python中使用sqlite3进行数据持久化操作

目录 引言 一、安装sqlite3模块 二、创建数据库连接 三、创建游标对象 四、执行SQL命令 五、提交更改 六、关闭连接 七、使用参数化查询 八、使用ORM进行数据操作 九、备份和恢复数据库 十、处理大量数据 十一、优化查询性能 十二、处理并发访问 十三、处理数据持…

小波神经网络的时间序列预测——短时交通流量预测

大家好&#xff0c;我是带我去滑雪&#xff01; 小波神经网络&#xff08;Wavelet Neural Network&#xff0c;WNN&#xff09;结合了小波变换和神经网络的特性&#xff0c;是一种在信号处理和模式识别领域应用广泛的神经网络模型。它的设计灵感来自于小波变换的多尺度分析特性…

JSP注释方式演示 讲解显式与隐式注释

好 今天我们来了解一下jsp中的注释哦 它支持两种注释: 显式注释/隐式注释 显式注释 是 允许被客户端看到的 就是 打开浏览器 用查看源码方式能看到的注释 与之对应 隐式注释 就是 在客户端 是无法看到这些注释信息的 显式注释 的语法就是html的注释语法 <!-- 显式注释 --…

AdaBoost:提升机器学习的力量

一、介绍 机器学习已成为现代技术的基石&#xff0c;为从推荐系统到自动驾驶汽车的一切提供动力。在众多机器学习算法中&#xff0c;AdaBoost&#xff08;Adaptive Boosting的缩写&#xff09;作为一种强大的集成方法脱颖而出&#xff0c;为该领域的成功做出了重大贡献。AdaBoo…

node将package.json中的包降为低版本或者升级为高版本

前言 比如现在你用某个包的当前版本&#xff0c;但是你安装的版本高了&#xff0c;那么你应该这么做 1.首先删除node项目中的node_modules目录&#xff0c;防止安装时的包不一致 如果没安装就忽略 例如将package.json中的view-design包降为^4.6.1,当前view-design的版本为^4.…

解决LX音乐切换音乐来源失败问题

之前免费听歌神器落雪音乐不能用了&#xff0c;原因懂得都懂 LX音乐Github链接 可以通过切换音乐来源进行解决 一、下载自定义音源文件 免费下载链接 下载一 百度网盘&#xff1a;1o7v 下载二 CSDN资源&#xff1a;自定义音源 全部音源文件来源 蓝奏云&#xff1a;8mno 下…