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.hqwc.cn/news/707444.html

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

相关文章

【MySQL】MySQL的索引事务 | 索引的优缺点 | 使用 | 原理 | B+树 | 事务的特性 | 隔离级别

文章目录 MySQL索引事务一、索引1.概念&#xff1a;2.代价3.索引的使用1.查看索引2.创建索引3.删除索引 4.索引的原理B树B树B树的优点&#xff1a; 二、事务1.概念2.使用3.回滚的原理&#xff1a;4.事务的特性1.原子性 &#xff1a;2.一致性 &#xff1a;3.持久性&#xff1a;4…

振弦采集仪在岩土工程监测中的数据解读与分析

振弦采集仪在岩土工程监测中的数据解读与分析 岩土工程监测是在岩土工程施工过程中进行的一项重要工作&#xff0c;旨在对岩土体的变形和应力变化进行实时监测和分析&#xff0c;以保障工程的安全和稳定。而河北稳控科技振弦采集仪作为岩土工程监测中常用的一种仪器&#xff0…

【大数据】MapReduce

文章目录 [toc]海量数据分流技术传统Hash一致性Hash&#xff08;Consistent Hashing&#xff09; MapReduce执行流程InputFormatShufflePartitionerSpillCombiner MapReduce两个重要的进程JobTrackerTaskTracker MapReduce物理配置查看系统资源限制设置合适的slot Hadoop Strea…

python创建新环境并安装pytorch

python创建新环境并安装pytorch 一、创建新环境1、准备工作2、创建虚拟环境并命名3、激活虚拟环境 二、安装pytorch1、pytorch官网2、选择与你的系统相对应的版本3、安装成功 一、创建新环境 1、准备工作 本次创建的环境是在anaconda环境下&#xff0c;否则需要在纯净环境下创…

解放双手,批量自动上传视频到微信视频号

文件夹里面有很多视频&#xff0c;一个个手工上传到视频号很麻烦&#xff0c;可以借助AI来自动化。 先把视频号上传流程熟悉一遍&#xff0c;把一些按钮截图&#xff0c;记录一些屏幕坐标。 然后&#xff0c;在deepseek的代码助手中输入提示词&#xff1a; 你是一个Python编程…

SpringBoot自动配置源码解析+自定义Spring Boot Starter

SpringBootApplication Spring Boot应用标注 SpringBootApplication 注解的类说明该类是Spring Boot 的主配置类&#xff0c;需要运行该类的main方法进行启动 Spring Boot 应用 SpringBootConfiguration 该注解标注表示标注的类是个配置类 EnableAutoConfiguration 直译&#…

Es6-对象新增了哪些扩展?

​&#x1f308;个人主页&#xff1a;前端青山 &#x1f525;系列专栏&#xff1a;Javascript篇 &#x1f516;人终将被年少不可得之物困其一生 依旧青山,本期给大家带来Javascript篇专栏内容:Es6-对象新增了哪些扩展&#xff1f; 目录 一、参数 二、属性 函数的length属性 …

自学VBA 设置单元格文字格式 笔记

一.设定对应单元格对应需要显示的格式 Cells(1, 1).Font.Size 18 字体大小 Cells(1, 2).Font.Color RGB(255, 0, 0) 字体颜色 Cells(1, 3).Font.Name "黑体" 字体类型 Cells(1, 4).Font.Italic True 字体斜体 Cells(1, 5).Font.FontStyle "BOLD"…

三相电子负载:技术创新与发展

随着科技的不断发展&#xff0c;电力系统的需求也在不断增长。为了满足这些需求&#xff0c;充电三相电子负载技术也在不断创新和发展。这种技术主要用于测试和验证电源、充电器、电池等设备的性能和可靠性&#xff0c;以确保它们能够在各种条件下正常工作。 充电三相电子负载的…

【文末附gpt升级方案】探讨当前时机是否适合进入AIGC行业(一)

随着科技的飞速发展&#xff0c;人工智能生成内容&#xff08;AIGC&#xff09;作为新兴的技术领域&#xff0c;正逐步走进公众的视野&#xff0c;并在多个行业展现出巨大的应用潜力。然而&#xff0c;对于创业者、投资者以及希望进入这一领域的专业人士来说&#xff0c;当前时…

Redhat 8.0更换centos8.0yum源

Redhat 8.0更换centos8.0yum源 一、先检查一下系统内核以及版本二、更换yum源三、生成缓存并下载epel扩展源四、Redhat安装指定myslq5.7报错 一、先检查一下系统内核以及版本 1、查看内核 [rootlocalhost ~]# uname -a Linux localhost.localdomain 4.18.0-80.el8.x86_64 #1 …

Leetcode-有效的括号(带图)

20. 有效的括号 - 力扣&#xff08;LeetCode&#xff09;https://leetcode.cn/problems/valid-parentheses/ 题目 给定一个只包括 (&#xff0c;)&#xff0c;{&#xff0c;}&#xff0c;[&#xff0c;] 的字符串 s &#xff0c;判断字符串是否有效。 有效字符串需满足&…