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

news/2023/6/7 22:59:18

目录标题

      • 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字节,则返回5423sum_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] = teacherprint(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] =0like_count[j]+=1print(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_gapreturn pdata_resultprint(get_diff_days("2023-01-19", 7))

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

如若内容造成侵权/违法违规/事实不符,请联系郑州代理记账网进行投诉反馈,一经查实,立即删除!

相关文章

前端工程与性能优化

每个参与过开发企业级 web 应用的前端工程师或许都曾思考过前端性能优化方面的问题。我们有雅虎 14 条性能优化原则,还有两本很经典的性能优化指导书:《高性能网站建设指南》、《高性能网站建设进阶指南》。经验丰富的工程师对于前端性能优化方法耳濡目染…

前端页面性能及其分析工具

本文结合谷歌官方工具 Lighthouse,分析了最新的前端页面性能评分标准,帮助大家更好地理解各项性能指标,以提升并优化相关的前端项目。一、前端页面性能及其分析工具前端页面的性能,一直都是大家持续关注的一个领域,因为…

文件下载 response响应ContentType与a标签download属性

参考资料 MediaType介绍了解HTML/HTML5中的download属性header中Content-Disposition的作用 目录一. ContentType二. a标签download属性2.1 下载同源静态资源文件2.2 下载非同源静态资源文件2.3 后台可省略Content-Disposition一. ContentType 我们在进行文件下载的时候&…

前端页面性能指标基本介绍

1. 基本指标介绍 首先前端性能指标一般分为以下几种: 首屏绘制(First Paint,FP) 首屏内容绘制(First Contentful Paint,FCP) 可交互时间(Time to Interactive,TTI&…

web前端页面性能优化(提升页面加载速度)

我们都知道,对于web应用来说性能很重要,然而性能的优化相关知识非常庞大而复杂,对于性能优化我们需要做些什么,或者瓶颈是什么通常是我们不太了解的。(当然技术大牛除外)通过查阅相关资料,了解到…

前端性能优化之性能测试

前端性能优化之性能测试 前端性能优化是一个很宽泛的概念,有很多教程都有前端性能优化的方法,这也是我们一直在关注的一件重要事情。配合各种方式、手段、辅助系统,前端优化的最终目的都是提升用户体验,改善页面性能,我…

日本品牌山地车java_2018“JAVA(佳沃)杯”第九届凤凰山山地自行车挑战赛在深圳举行...

原标题:2018“JAVA(佳沃)杯”第九届凤凰山山地自行车挑战赛在深圳举行11月11日,在深圳美丽的凤凰山下,由宝安区文体旅游局、福永街道办事处主办的第九届“JAVA(佳沃)”杯凤凰山山地自行车挑战赛隆重开幕。本次活动共有400余名来自全国十九个省…

使用sdk-npi-enablement-tool生成SVD文件和芯片头文件

使用sdk-npi-enablement-tool生成SVD文件和芯片头文件 文章目录使用sdk-npi-enablement-tool生成SVD文件和芯片头文件IntroductionOverviewOperation Steps创建芯片配置文件yaml填充外设模块的寄存器映射描述文件xlsx验证生成芯片头文件ConclusionIntroduction 芯片验证与测试…