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

news/2024/11/19 13:37:02/

目录

    • 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.ppmy.cn/news/1211599.html

相关文章

安装包 amd,amd64, arm,arm64 都有什么区别

现在的安装包也不省心&#xff0c;有各种版本都不知道怎么选。 根据你安装的环境配置。 amd&#xff1a; 32位X86 amd64&#xff1a; 64位X86 arm&#xff1a; 32位ARM arm64&#xff1a; 64位ARM amd64是X86架构的CPU&#xff0c;64位版。amd64又叫X86_64。主流的桌面PC&am…

ArcGIS10.8 连接 PostgreSQL 及遇到的两个问题

前提 以前同事用过我的电脑连PostgreSQL&#xff0c;失败了。当时不知道原因&#xff0c;只能使用GeoServer来发布数据了。现在终于搞明白了&#xff0c;原因是ArcGIS10.2版本太老&#xff0c;无法连接PostgreSQL9.4。参考这里 为了适应时代的发展&#xff0c;那我就用新的Ar…

AJAX基础

<!DOCTYPE html> <html> <head> <meta charset"UTF-8" /> <title>AJAX</title> </head> <body> <!-- 什么是AJAX 定义AJAX是异步的JavaScript和XML&#xff0c; 简单点说&#xff0c;就是XMLHttpRequest对…

java 继承和多态 (图文搭配,万字详解!!)

目录 1.继承 1.1 为什么需要继承 1.2 继承概念 1.3 继承的语法 1.4 父类成员访问 1.4.1 子类中访问父类的成员变量 1.4.2 子类中访问父类的成员方法 1.5 super关键字 1.6 子类构造方法 1.7 super和this 1.8 再谈初始化 1.9 protected 关键字 1.10 继承方式 1.11 f…

Interactive Analysis of CNN Robustness

Interactive Analysis of CNN Robustness----《CNN鲁棒性的交互分析》 摘要 虽然卷积神经网络&#xff08;CNN&#xff09;作为图像相关任务的最先进模型被广泛采用&#xff0c;但它们的预测往往对小的输入扰动高度敏感&#xff0c;而人类视觉对此具有鲁棒性。本文介绍了 Pert…

最新获取支付宝cardIndex参数图文教程

本章教程主要介绍如何获取支付宝的cardIndex参数。 目录 一、登录到支付宝官网 二、在历史记录中,找到对应用户 一、登录到支付宝官网

C++学习---信号处理机制、中断、异步环境

文章目录 前言信号处理signal()函数关于异步环境 信号处理函数示例raise()函数 前言 信号处理 关于信号&#xff0c;信号是一种进程间通信的机制&#xff0c;用于在程序执行过程中通知进程发生了一些事件。在Unix和类Unix系统中&#xff0c;信号是一种异步通知机制&#xff0c…

Shell编程入门--概念、特性、bash配置文件

目录 一、Shell概念1.定义2.分类和使用场景2.1.分类和切换2.2.使用场景 3.特性3.1.文件描述符与输出重定向3.2.历史命令---history3.3.别名 --alias3.4.命令排序执行3.5.部分快捷键3.6.通配符置换 4.脚本规范5.脚本运行方式5.1.bash脚本执行5.2.bash脚本测试 二、bash配置文件1…