python经典刷题-关于文件、日期的题

news2024/11/18 16:51:28

目录标题

      • 1,统计目录下所有文件大小-os的使用
      • 2,按文件后缀整理文件夹
      • 3,递归搜索目录找出最大文件
      • 4,计算不同课程的最高分最低分--分组处理
      • 5,实现不同文件的关联
      • 6,批量txt文件的合并
      • 7,统计每个兴趣的学生人数
      • 8,获取当前的日期和时间-datetime.datetime.now()
      • 9,计算两个日期相隔的天数
      • 10,计算任意日期7天前的日期

1,统计目录下所有文件大小-os的使用

os.path.getsize(文件名)-----获取文件的大小
os.listdir(‘路径’)----路径下的所有文件和目录
os.path.isfile(file)----判断是否为文件

import os
print(os.path.getsize('文件.txt'))  #文件5423字节,则返回5423

sum_size = 0
for file in os.listdir('.'):  #遍历当前
	if  os.path.isfile(file):  #排除是目录的
		sum_size +=os.path.getsize(file)
print('总文件大小:',sum_size/1000) #sum_size原本单位是b,除以1000后得到kb

2,按文件后缀整理文件夹

获取后缀名:os.path.splittext(‘路径’)
移动文件:shutil.move(‘原始地址文件’,‘要移动到的地址’)
创建目录:os.mkdir(f’{dir}/{ext}')
在这里插入图片描述

import os
import shutil
dir = '路径目录'
for file in os.listdir(dir):
	ext = os.path.splitext(file)[1]
	ext = ext[1:] #得到后缀名
	print(file,ext)
	if not os.path.isdir(f'{dir}/{ext}'):  #给当前路径创建以后缀名为名字的文件夹
		os.mkdir(f'{dir}/{ext}')
	source_path = f"{dir}/{file}"
	target_path = f"{dir}/{ext}/{file}"
	shutil.move(source_path,target_path)  #写路径的时候都要落脚到最后的文件名或者文件夹名

创建文件夹后:
在这里插入图片描述

3,递归搜索目录找出最大文件

没用os.listdir()–不然后面要if判断一下是文件还是目录
用os.walk()–直接得到文件
在这里插入图片描述
思路:用一个列表先储存目标路径下的文件和文件大小os.path.getsize()
然后降序排列sorted(),取前10个

import os
search_dir = '放目标目录'
result_files = []
for root,dirs,files in os.walk(search_dir):
	for file in files:
		file_path = f"{root}/{file}"
		result_files.append(file_path,
					os.path.getsize(file_path)/1000)
print(sorted(result_files,key=lambda x:x[1],reverse = True)[:10])

4,计算不同课程的最高分最低分–分组处理

思路:用一个字典,把课程名和所有成绩储存起来。然后for遍历字典,输出课程名和最大成绩

文件grades.txt中记下:
语文,1,小张,96
语文,2,小红,90
语文,3,小明,86
语文,4,小王,92
数学,1,小张,96
数学,2,小红,90
数学,3,小明,86
数学,4,小王,92

course_grades={}#key:课程,value:成绩列表
with open('./grades.txt') as fin:
	for line in fin:
		line = line[:-1]
		course,sno,sname,sgrade = line.split(",")###直接获取各列值
		if course not in course_grades:
			course_grades[course] = []
		course_grades[course].append(int(sgrade))
print(course_grades)
for course,grades in course_grades.items():
	print(course,max(grades),min(grades),sum(grades)/len(grades))

course_grades中格式:
在这里插入图片描述

5,实现不同文件的关联

文件grades.txt中记下:
语文,1,小张,96
语文,2,小红,90
语文,3,小明,86
语文,4,小王,92
数学,1,小张,96
数学,2,小红,90
数学,3,小明,86
数学,4,小王,92

文件teacher.txt中内容:
语文,于老师
数学,树老师

将两文件进行关联:
思路:将teacher.txt中内容放进一个字典中,然后将grades.txt中各行数据和老师列一起for遍历输出

course_teacher_map = {}
with open('./teacher.txt') as fin:
	for line in fin:
		line = line[:-1]
		course,teacher = line.split(",")
		course_teacher_map[course] = teacher

print(course_teacher_map)
with open("./grades.txt") as fin:
	for line in fin:
		line= line[:-1]
		course,sno,sname,sgrade=line.split(",")
		teacher = course_teacher_map[course]  #当前在for循环中
		print(course,teacher,sno,sname,sgrade)
		

course_teacher_map中形式:
在这里插入图片描述

6,批量txt文件的合并

python读取文件的两个方法:
1,按行读取:for line in fin
2,一次读取所有内容到一个字符串中: content = fin.read()

思路:遍历目标路径,找出是txt结尾的文件,打开,将内容append到一个空列表中,然后写入新文件中

目标路径下:放着文件1.txt,文件2.txt,文件3.txt

import os
data_dir = "目标目录"
content = []
for file in os.listdir(data_dir):
	file_path = f"{data_dir}/{file}"
	if os.path.isfile(file_path) and file.endswith('.txt'):
		with open(file_path) as fin:
			contents.append(fin.read())
	
final_content = '\n'.join(contents)	#每个内容加一个换行符
with open("./结果存放.txt",'w') as font:
	font.write(final_content)

复述一遍:

import os
mubiao ="目标目录"
con = []
for files in os.listdir(mubiao):
	files_path = f"{mubiao}/{files}"
	if os.path.isfile(files_path) and file_path.endswith('.txt'):
		with open(files_path) as fin:
			con.append(fin.read())
final_con = '\n'.join(con)
with open("心文件.txt",'w') as fout:
	fout.write(final_con)

最后结果存放.txt中内容:
在这里插入图片描述

7,统计每个兴趣的学生人数

文件student_like.txt中内容:
小张 篮球,羽毛球
小米 乒乓球,台球
小明 羽毛球,台球

like_count =[]#key是爱好,values是计数
with open('./student_like.txt') as fin:
	for line in fin:
		line = line[:-1]
		names,likes = line.split(" ")
		like_list = likes.split(",")#直接用split划分出来
		for i in likes:
			if i not in like_count:
					like_count[j] =0
				like_count[j]+=1
		
print(like_count)

思路:一行一行读取文件–把爱好split出来–每遇到一次加一

8,获取当前的日期和时间-datetime.datetime.now()

import datetime
curr_datetime = datetime.datetime.now()
print(curr_datetime,type(curr_datetime)) #是class类型,对象
#更改日期输出格式--strftime
str_time = curr_datetime.strftime('%Y-%m-%d %H:%M:%S')#更改日期格式
print(str_time)

#单独获取年月日。。
print("year:",curr_datetime.year)
print("month:",curr_datetime.month)
print("day:",curr_datetime.day)
print("hour:",curr_datetime.hour)
print("minute:",curr_datetime.minute)
print("second:",curr_datetime.second)

在这里插入图片描述

9,计算两个日期相隔的天数

转变为日期格式–datetime.strptime

import datetime
brithday = '1998-12-30' #现在是字符串类型,需要先转变为日期格式
brithday_date = datetime.datetime.strptime(birthday,'%Y-%m-%d') #这时候后才可以用
print(brithday_date,type(brithday_date))

curr_datetime = datetime.datetime.now()
print(curr_datetime,type(curr_datetime))

#两个日期类型的数据,进行相减
minus = curr_datetime-brithday_date
print(minus,type(minus))
print(minus.days)

在这里插入图片描述

10,计算任意日期7天前的日期

日期要记得转成日期类型 :datetime.strptime(date, ‘%Y-%m-%d’)
天数做加减时也需要改成日期类型:time_gap = datetime.timedelta(days=days)

import datetime
def get_diff_days(pdate, days):  # 输出: pdate前days天的日期
    pdate_obj = datetime.datetime.strptime(pdate, '%Y-%m-%d')
    time_gap = datetime.timedelta(days=days)  # 天数也变成日期类型
    pdata_result = pdate_obj - time_gap
    return pdata_result

print(get_diff_days("2023-01-19", 7))

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

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

相关文章

植物神经紊乱在心脑血管方面可能出现哪些症状

大家好,当植物神经的失衡涉及心脑血管的时候,可能会出现哪些症状表现? 植物神经紊乱为什么会涉及心脑血管? 你们知道吗?植物神经紊乱的实质,是由于体内庞大的神经系统的失衡导致的。而植物神经,…

javaEE 初阶 — 网络通信基础

文章目录1. IP 地址2. 端口号3. 认识协议4. 协议分层4.1 分层的作用4.2 OSI七层模型4.3 TCP/IP五层(或四层)模型4.4 网络数据传输的基本流程4.4.1 发送方4.4.2 接收方1. IP 地址 IP地址主要用于标识网络主机、其他网络设备(如路由器&#xff…

PowerSNMP for .NET 6.1.0.0 Crack

关于适用于 .NET 的 PowerSNMP 创建自定义 SNMP 管理器、陷阱和代理应用程序以监视和控制网络设备。 PowerSNMP for .NET 包括简单网络管理协议 (SNMP) 组件,可无缝集成线程通信、安全和编码/解码,因此您可以快速开发自定义 SNMP 应用程序。该开发工具需…

HW_DIMM分类与比较

DIMM 分类参考链接 UDIMM UDIMM is also known as unbuffered DIMM, that is, unbuffered dual in-line memory module. The application of this memory module means that the address and control signals can directly reach the DRAM chip on the server DIMM without g…

[hive]维度模型分类:星型模型,雪花模型,星座模型|范式

一、维度模型分类:星型模型,雪花模型,星座模型1、星型模型星型模型中只有一张事实表,以及0张或多张维度表,事实与纬度表通过主键外键相关联,维度之间不存在关联关系,当所有纬度都关联到事实表时,整个图形非常像一种星型…

ESP32设备驱动-MPU-9250 3轴陀螺仪/加速度计/磁力计驱动

MPU-9250 3轴陀螺仪/加速度计/磁力计驱动 1、MPU9250介绍 MPU-9250 是面向智能手机、平板电脑、可穿戴传感器和其他消费市场的第二代 9 轴运动处理单元™(Motion Processing Unit™)。 MPU-9250 采用 3x3x1mm QFN 封装,是世界上最小的 9 轴运动跟踪设备,采用了最新的 Inven…

钢结构之槽钢及角钢

槽钢 槽钢是截面为凹槽形的长条钢材,截面形状为槽形的型钢。 槽钢的基本介绍 槽钢属建造用和机械用碳素结构钢,是复杂断面的型钢钢材,其断面形状为凹槽形。槽钢主要用于建筑结构、幕墙工程、机械设备和车辆制造等。在使用中要求其具有较好的…

没有选品经验的电商卖家该在TikTok上卖什么商品?超店有数来帮你

TikTok近年来增速迅猛,凭借巨大的流量频频登榜多国APP下载榜首,而其电商业务同样处于快速增长状态。2022上半年,TikTok电商的GMV已超10亿美元;2022年全年,TikTok Shop在东南亚GMV增长逾三倍,达到44亿美元。…

【SpringBoot2】SpringBoot中配置文件详解

SpringBoot使用一个全局的配置文件,配置文件名是固定的,支持两种格式 1、两种格式(properties,yml) application.properties application.yml 由此可以看出 application.yml 文件格式的内容更为简洁,清晰…

SpringAMQP - 发布订阅模式

目录 发布订阅介绍 FanoutExchange简介 FanoutExchange案例 常见小问题 DirectExchange简介 DirectExchange案例 常见小问题 TopicExchange简介 TopicExchange案例 发布订阅介绍 发布(Publish)、订阅(Subscribe)发布订阅…

Python【xpath】基础上

xpath解析: 最常用且最便捷高效的一种解析方式。通用性- xpath 解析原理:- 1.实例化一个etree的对象,且需要将被解析的页面源码数据加载到该对象中环境安装:- cmd 输入 pip install lxml- 如何实例化一个etree 对象- 1.将本地的html&#xff…

从管易云到MySQL通过接口配置打通数据

数据源平台:管易云管易云是金蝶旗下专注提供电商企业管理软件服务的子品牌,先后开发了C-ERP、EC-OMS、EC-WMS、E店管家、BBC、B2B、B2C商城网站建设等产品和服务,涵盖电商业务全流程。写入目标:MySQLmysql是一个关系数据库管理系统(RDBMS&…

SpringBoot的自动配置

参考视频:每一帧都是干货!15分钟的视频花2小时看 一、配置类(Configuration Class) 广义的配置类:被注解Component直接或间接修饰的某个类,即我们常说的Spring组件,其中包括了Configuration类…

类加载器与双亲委派

-----摘自 周志明 《深入理解Java虚拟机》类加载器Java虚拟机设计团队有意把类加载阶段中的“通过一个类的全限定名来获取描述该类的二进制字节流”这个动作放到Java虚拟机外部去实现,以便让应用程序自己决定如何去获取所需的类。实现这个动作的代码被称为“类加载器…

R语言多元数据统计分析在生态环境中的实践应用

生态环境领域研究中常常面对众多的不同类型的数据或变量,当要同时分析多个因变量(y)时需要用到多元统计分析(multivariate statistical analysis)。多元统计分析内容丰富,应用广泛,是非常重要和…

管易云与网易互客对接集成发货单=>编辑订单

对接源平台:管易云管易云是金蝶旗下专注提供电商企业管理软件服务的子品牌,先后开发了C-ERP、EC-OMS、EC-WMS、E店管家、BBC、B2B、B2C商城网站建设等产品和服务,涵盖电商业务全流程。对接目标系统:网易互客网易互客是一款智能化的客户关系管理工具。可以…

JavaEE3-Spring创建

目录 1.创建一个普通的Maven项目 2.添加Spring框架支持(spring-context,spring-beans) 3.添加启动类 1.创建一个普通的Maven项目 不选择任何模板,直接点Next。 Name:项目名称; Location:项目保存路径; …

【文件操作】-还在为运行的数据没法保存而烦恼吗??这篇博客让你十分钟之内解决问题,赶紧进来看看!!!

🎇作者:小树苗渴望变成参天大树 💦作者宣言:认真写好每一篇博客 💖作者gitee:gitee 如 果 你 喜 欢 作 者 的 文 章 ,就 给 作 者 点 点 关 注 吧! ✨文件操作🧨前言💤一…

压力测试和JMeter使用分析

压力测试考察当前软硬件环境下系统所能承受的最大负荷并帮助找出系统瓶颈所在。 压测都 是为了系统在线上的处理能力和稳定性维持在一个标准范围内,做到心中有数。 使用压力测试,我们有希望找到很多种用其他测试方法更难发现的错误。 有两种错误类型是:…

nginx简单梳理

Nginx总结 这里写目录标题Nginx总结**Nginx** **的简介**1、什么是 **nginx**2、正向代理3、反向代理4、负载均衡**5**、动静分离**Nginx** 的安装**Nginx** **的常用的命令****Nginx** 的配置文件**Nginx** **配置实例**-**反向代理实例** **1****Nginx** **配置实例**-**负载…