Python程序设计 文件处理(二)

实验十二 文件处理

第1关:读取宋词文件,根据词人建立多个文件

读取wjcl/src/step1/宋词.txt文件, 注意:宋词文件的标题行的词牌和作者之间是全角空格(" ")可复制该空格

在wjcl/src/step3/cr文件夹下根据每位词人建立一个文本文件,将各位词人的所有作品写入对应的文件

 根据提示,在右侧编辑器补充代码,读取wjcl/src/step1/宋词文件,在wjcl/src/step3/cr/文件夹下根据每位词人建立一个文本文件,将各位词人的所有作品写入该文件。

建立文件

文件的打开 <file对象名>=open(<文件名>,<打开模式>) 打开一个文件,并创建一个file类对象 打开模式为a,追加写模式,文件不存在则创建,存在则在原文件最后追加内容 注意:打开文件后,指针定位在文件的最后 打开模式为w,覆盖写模式,文件不存在则创建,存在则完全覆盖源文件。

写入文件

f1.write(s) 向文件指针f1写入一个字符串

import shutil
import os
if os.path.exists("wjcl/src/step3/cr"):shutil.rmtree("wjcl/src/step3/cr")
os.mkdir("wjcl/src/step3/cr")
f1=open("wjcl/src/step1/宋词.txt",'r')
#代码开始for i in f1:if " " in i:xm = i.strip()[i.rfind(" ")+1:]f2 = open("wjcl/src/step3/cr/"+xm+".txt", "a")if len(i.strip())>0:f2.write(i)#代码结束
f1.close()
f2.close()

 第2关:读取宋词文件,并根据词人建立多个文件夹

读取wjcl/src/step1/宋词文本文件,在wjcl/src/step4/sccr文件夹下根据每位词人姓名建立文件夹

文件及文件夹的管理

Os模块 os模块为系统内置模块,提供了对系统环境、文件、目录等操作系统级的接口函数。 os.path.exists() 文件夹是否存在 mkdir() 创建目录 rmdir() 删除目录 listdir() 返回指定目录下的所有文件和目录名 remove() 删除文件

根据提示,在右侧编辑器补充代码,读取wjcl/src/step1/宋词文本文件,在wjcl/src/step4/sccr文件夹下根据每位词人建立文件夹 注意:标题行的词牌名和作者之间是全角空格 (" ")可在此复制

import os
import shutil
if os.path.exists("wjcl/src/step4/sccr"):shutil.rmtree("wjcl/src/step4/sccr")
os.mkdir("wjcl/src/step4/sccr")
f1=open("wjcl/src/step1/宋词.txt",'r')
#代码开始for i in f1:i = i.strip()if " " in i:xm = i[i.rfind(" ") + 1:]s = "wjcl/src/step4/sccr/"+ xmif not os.path.exists(s):os.mkdir(s)f1.close()
#代码结束

第3关 读取宋词文件,建立多个词人文件夹,为每首词在文件夹下建立文本文件

读取wjcl/src/step1/宋词文本文件,为每位作者在wjcl/src/step5/cr下建立文件夹,再在作者文件夹下为每首词建立一个文件 注意:标题行的词牌名和作者之间是全角空格 (" ")可在此复制

李清照文件夹下的文件 

 

import os
import shutil
if  os.path.exists("wjcl/src/step5/cr"):shutil.rmtree("wjcl/src/step5/cr")
os.mkdir("wjcl/src/step5/cr")
f1=open("wjcl/src/step1/宋词.txt",'r')
#代码开始for i in f1:if " " in i:a = i.find(" ")xm = i.strip()[a+1:]s = "wjcl/src/step5/cr/"+ xmif not os.path.exists(s):os.mkdir(s)pm = i.strip()[:a]f2 = open(s+"/"+pm+".txt","a+")f2.write(i)    f1.close()
f2.close()
#代码结束

 第4关:文件的统计

编写统计文件夹下不同文件类型的数量和大小的程序。

os模块

os模块为系统内置模块,提供了对系统环境、文件、目录等操作系统级的接口函数 listdir() 返回指定目录下的所有文件和目录名 path.isfile() 检验是否是一个文件 path.splitext()  文件名和扩展名分离 os.path.getsize() 获取文件大小

注意:上述函数需要将文件夹和文件的完整路径作为参数

import os
wjzd={}
wjsize={}
lj="wjcl/src/test"
#代码开始
l = os.listdir(lj)
for i in l:if ".gitkeep" in i:continueelse:a = os.path.splitext(i)b = os.path.getsize("wjcl/src/test/"+i)wjsize[a[1]] = wjsize.get(a[1],0)+bwjzd[a[1][1:]] = wjzd.get(a[1][1:],0)+1
#代码结束  
lb=list(wjzd.items())
lb.sort()
lb2=list(wjsize.items())
lb2.sort()
for i in range(len(lb)):print("文件类型{}文件数{}文件大小{:.2f}KB".format(lb[i][0],lb[i][1],lb2[i][1]/1024))

第5关:文件的移动

编写一个小程序,在test3文件夹下建立子文件夹,并根据文件类型将文件移动到相应的文件夹下。

os模块

os模块为系统内置模块,提供了对系统环境、文件、目录等操作系统级的接口函数。 listdir() 返回指定目录下的所有文件和目录名 mkdir() 创建目录 rmdir() 删除目录 path.isfile() 检验是否是一个文件 path.splitext()  文件名和扩展名分离 os.path.exists() 文件或文件夹是否存在

shulti模块

shutil模块是对os模块的补充,主要针对文件的拷贝、删除、移动、压缩和解压操作 rmtree(sdir) 删除文件夹(包括所有子文件夹和文件) move(src, ddir) 移动文件到另一个文件夹

根据test3文件夹下文件的类型,在test3文件夹下建立相应的子文件夹,并将文件移动到相应的文件夹下。 具体来说,扩展名为.jpeg.jpg.png.jifi的文件移动到图片子文件夹下,.mp3.wav移动到音频文件夹下,.mp4.flv移动到视频文件夹下,.txt.docx.pdf移动到文档文件夹下。 提示:可以建立字典来指定文件夹和文件的对应关系

最后,需要在test3下建立图片、文档、音频和视频四个文件夹,并将文件按扩展名的对应关系移动到相应文件夹下 最后显示如下

  1. ['ifs大熊猫.jpg', '基地1.jpg', '春熙路图集1.jfif', '春熙路图集2.jpeg', '春熙路图集3.jfif', '杜甫草堂.png', '青城山.png']
  2. ['pq.flv', '七彩丹霞视频.mp4', '云南十八怪_.mp4']
  3. ['学院设置.docx', '昆明.docx', '琵琶行并序.txt', '考题一.pdf', '考题四.pdf']
  4. ['add.wav', 'score.wav', '山歌好比春江水.mp3', '花儿尕恋手令.mp3']
import os
import shutil
wj={"图片":".jpeg.jpg.png.jfif","文档":".txt.docx.pdf","音乐":".mp3.wav","影像":".mp4.flv"}
lj1="wjcl/src/test2"
lj="wjcl/src/test3"
if os.path.exists(lj):shutil.rmtree(lj)  
shutil.copytree(lj1,lj)
#代码开始
k=os.listdir(lj)
k.remove(".gitkeep")
for i in wj.keys():if not os.path.exists(lj+"/"+i):os.mkdir(lj+"/"+i)for i in k:wjm,kzm=os.path.splitext(i)if kzm in wj["图片"]:shutil.move(lj+"/"+i,lj+"/"+"图片")if kzm in wj["文档"]:shutil.move(lj+"/"+i,lj+"/"+"文档")if kzm in wj["音乐"]:shutil.move(lj+"/"+i,lj+"/"+"音乐")if kzm in wj["影像"]:shutil.move(lj+"/"+i,lj+"/"+"影像")#代码结束
ml=os.listdir(lj)
ml.sort()
for x in ml:if x!=".gitkeep":wj=os.listdir(lj+"/"+x)wj.sort()print(wj)

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

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

相关文章

【CSND博客纪念】“创作纪念日:从灵感迸发到小有成就——我的CSND博客创作之旅”

&#x1f3a9; 欢迎来到技术探索的奇幻世界&#x1f468;‍&#x1f4bb; &#x1f4dc; 个人主页&#xff1a;一伦明悦-CSDN博客 ✍&#x1f3fb; 作者简介&#xff1a; C软件开发、Python机器学习爱好者 &#x1f5e3;️ 互动与支持&#xff1a;&#x1f4ac;评论 &…

算法分析与设计复习__递归方程与分治

总结自&#xff1a;【算法设计与分析】期末考试突击课_哔哩哔哩_bilibili 1.递归&#xff0c;递归方程 1.1递归条件: 1.一个问题的解可以分解为几个子问题的解&#xff1b; 2.这个问题与分解之后的子问题&#xff0c;除了数据规模不同&#xff0c;求解思路完全一样; 3.存在…

【面试干货】一个数组的倒序

【面试干货】一个数组的倒序 1、实现思想2、代码实现 &#x1f496;The Begin&#x1f496;点点关注&#xff0c;收藏不迷路&#x1f496; 1、实现思想 创建一个新的数组&#xff0c;然后将原数组的元素按相反的顺序复制到新数组中。 2、代码实现 package csdn;public class…

一个强大的在线解析网站,无需登录,只用把视频链接粘贴进去就能免费解析下载视频。

TiQu.cc是什么&#xff1f; TiQu.cc是一个强大的在线工具&#xff0c;让用户可以从包括Facebook、VK、Twitter、Tiktok、Instagram等在内的100多个平台下载他们喜爱的视频。不论是音乐、电视节目、电影、短片还是个人上传的内容&#xff0c;TiQu.cc都可以帮助您随时随地以离线…

ChatGPT 4o 使用案例之一

2024年GPT迎来重大更新&#xff0c;OpenAI发布GPT-4o GPT-4o&#xff08;“o”代表“全能”&#xff09; 它可以接受任意组合的文本、音频和图像作为输入&#xff0c;并生成任意组合的文本、音频和图像输出。它可以在 232 毫秒内响应音频输入&#xff0c;平均为 320 毫秒&…

把tif的值映射到shp栅格

目录 问题描述代码结果示例 问题描述 假如目前有一个&#xff08;多个&#xff09;tif文件和一个shp文件&#xff0c;想要把tif中每个像素的值集成到shp文件的新字段中。如果栅格和像素是一一对应的&#xff0c;问题将会变得非常简单&#xff1a;直接把每个像素的值映射到每个…

【Python探索之旅】字典

字典的基本特性 创建字典 修改字典 添加键值对 删除键值对 字典方法 遍历字典 完结撒花​ 前言 字典是 Python 中内建的一种具有弹性储存能力的数据结构&#xff0c;可存储任意类型对象&#xff0c;与序列使用整数索引不同&#xff0c;它使用键(key)进行索引。 通常任何不…

小白也会SQL:大模型改变交互方式(上)

在人工智能与自然语言处理交汇点&#xff0c;有一种技术正悄然改变与数据交互的方式——将日常语言转化为精准SQL查询。这一“text-to-sql”转换任务&#xff0c;使非专业人士也能轻松驾驭复杂的数据库操作&#xff0c;极大地拓宽了数据应用的边界。 然而&#xff0c;现有前沿…

linux系统查看服务器硬件信息

1、查看服务器型号、序列号 # dmidecode|grep "System Information" -A9 | egrep "Manufacturer|Product|Serial" 2、查看主板型号 # dmidecode |grep -A16 "System Information$" 或 dmidecode -t1 3、查看BIOS信息 # dmidecode -t bios 4、…

vue嵌套路由

一、嵌套 children配置 1.父类路由 mymusic 2.子类路由 musicson 1.创建MusicSon组件 <template><div><p>从前和后来</p><p>唯一</p><p>运气来的似有若无</p></div> </template><script>export defaul…

通俗易懂的策略模式讲解

什么是策略模式&#xff1f; 策略模式是一种设计模式&#xff0c;它允许你定义一系列的算法&#xff08;策略&#xff09;&#xff0c;并将每个算法封装成一个对象。这样&#xff0c;你可以轻松地切换不同的算法&#xff0c;而不需要改变原始代码。 一个简单的例子 假设你是…

这10款安卓APP,简直好用到爆!

AI视频生成&#xff1a;小说文案智能分镜智能识别角色和场景批量Ai绘图自动配音添加音乐一键合成视频http://AI视频生成&#xff1a;小说文案智能分镜智能识别角色和场景批量Ai绘图自动配音添加音乐一键合成视频 1.追书——追书神器 追书神器是小说追新大神&#xff0c;全网实…

摸鱼大数据——大数据导论

大数据导论 1、概念 大数据时代: 万物皆数据 ​ 数据概念: 人类的行为及产生的事件的一种记录称之为数据 ​ 数据价值: 对数据的内容进行深入分析&#xff0c;可以更好的帮助了解事和物在现实世界的运行规律 2、大数据诞生 大数据的诞生: 跟随着互联网的发展的,当全球互联…

K8S认证 | CKA题库 + 答案 | 查看Pod CPU资源使用量

2、查看集群中运行Pod CPU资源使用量 您必须在以下Cluster/Node上完成此考题&#xff1a; Cluster Master node Worker node k8s …

拧紧设备或工具的选型原则、常见类型和选型关键因素有哪些?

智能扭矩系统-智能拧紧系统-扭矩自动控制系统-SunTorque 在工业生产领域&#xff0c;拧紧控制是一项至关重要的工艺环节。它涉及螺栓、螺母等紧固件的装配过程&#xff0c;直接关系到产品的质量和性能。因此&#xff0c;选择合适的拧紧设备或工具对于确保拧紧过程的准确性和稳…

[牛客网]——C语言刷题day4

答案&#xff1a;B 解析&#xff1a; a是数组首元素的地址,a1的步长是int&#xff0c;所以是2 &a是数组的首地址&#xff0c;&a1步长是int[5] ptr是int类型的指针&#xff0c;指向a数组的尾后位置&#xff0c;ptr-1的步长是int,所以是a数组的最后一个元素5 答案&am…

如何使用ffmpeg 实现10种特效

相关特效的名字 特效id 特效名 1 向上移动 2 向左移动 3 向下移动 4 颤抖 5 摇摆 6 雨刷 7 弹入 8 弹簧 9 轻微跳动 10 跳动 特效展示(同时汇总相关命令) pad背景显示 pad背景透明 相关命令(一会再讲这些命令&#xff0c;先往下看) # 合成特效语音 ffmpeg -y -loglevel erro…

Element Plus/vue3 无限级导航实现

在使用element plus 时&#xff0c;最初要使用的就是导航组件了&#xff0c;官网上看到的也就是写死的一级/二级导航&#xff0c;那么如何设计一个无限级且动态的导航呢&#xff1f;毋庸置疑&#xff0c;递归。废话不多说&#xff0c;直接看代码和效果&#xff1a; 代码&#x…

Jmeter:录制脚本(操作文档)

新建线程组 打开jmeter&#xff0c;右键测试计划–>添加–>Threads(Users)–>点击"线程组" 添加录制控制器 右键线程组–>添加–>逻辑控制器–>点击"录制控制器" 添加HTTP代理服务器 右键工作台–>添加–>非测试元件–>…