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/"+ xm
        if 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/"+ xm
        if 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:
        continue
    else:
        a = os.path.splitext(i)
        b = os.path.getsize("wjcl/src/test/"+i)
        wjsize[a[1]] = wjsize.get(a[1],0)+b
        wjzd[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)

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

畅捷通TPlus keyEdit.aspx、KeyInfoList.aspx SQL注入漏洞复现

前言 免责声明&#xff1a;请勿利用文章内的相关技术从事非法测试&#xff0c;由于传播、利用此文所提供的信息或者工具而造成的任何直接或者间接的后果及损失&#xff0c;均由使用者本人负责&#xff0c;所产生的一切不良后果与文章作者无关。该文章仅供学习用途使用。 一、产…

C++ 结构体内存对齐

定义了两个结构体 typedef struct Cmd {uint8_t ua;uint8_t ub;uint8_t uc;uint32_t ue; } Cmd_t;typedef struct Cmd_tag {uint8_t value;uint8_t data[1]; // 将 data 定义为指向 Cmd_t 结构体的指针 } tag_t;在实际使用中&#xff0c;看见前人的代码是&#xff0c;new 一块内…

KCNScrew Pack for mac v1.8(2024.05.15)激活版 序列号查询软件

KCNScrew Pack是一款Mac序列号查询软件&#xff0c;内置强大的序列号数据库。软件包含数千款软件序列号&#xff0c;基本上大多数常用软件你都可以找到相应的序列号。 KCNScrew Pack for mac v1.8(2024.05.15)激活版 序列号查询软件 主界面 打开KCNScrew可以看到如下的主界面&…

微信自主创建表单投票小程序源码系统 带充值刷礼物功能 附带源代码以及完整的安装部署教程

系统概述 本小程序实现的核心功能包括&#xff1a;用户注册登录、表单提交投票、查看投票结果、在线充值以及赠送礼物等。其中&#xff0c;投票表单可以根据实际需求进行自定义设置&#xff0c;满足不同类型的调查或评选活动。同时&#xff0c;通过引入第三方支付接口&#xf…

STM32_IIC通信

IIC通信 • I2C&#xff08;Inter IC Bus&#xff09;是由Philips公司开发的一种通用数据总线 • 两根通信线&#xff1a;SCL&#xff08;串行时钟线&#xff09;、SDA&#xff08;串行数据线&#xff09; • 同步&#xff0c;半双工 • 带数据应答 • 支持总线挂载多…

C 深入指针(4)

目录 一、字符指针变量 1 初始化 2 与字符串数组的区别 二、数组指针变量 1 初始化 2 二维数组传参本质 三、函数指针变量 1 初始化 2 用法 四、typedef关键字 五、函数指针数组 一、字符指针变量 1 初始化 //VS2022 x64 #include <stdio.h> int main() {…

STM32程序下载电路设计

一、背景介绍 使用STM32F103RCT6作为单片机主控芯片&#xff0c;在进行电路板设计过程中&#xff0c;需要预留程序下载接口&#xff0c;可以选择使用JLINK下载器下载程序。 二、设计过程 1、查看STM32F103RCT6的芯片手册&#xff0c;找到下载程序的引脚端口PA13和PA14&#x…

浏览器插件Video Speed Controller(视频倍速播放),与网页自身快捷键冲突/重复/叠加的解决办法

浏览器插件Video Speed Controller&#xff08;视频倍速播放&#xff09;&#xff0c;与网站自身快捷键冲突/重复/叠加的解决办法 插件介绍问题曾今尝试的办法今日发现插件列表中打开Video Speed Controller的设置设置页面翻到下面&#xff0c;打开实验性功能。将需要屏蔽的原网…

抖音小店有订单后怎么发货?实操分享!发货全流程来了

哈喽~我是电商月月 做无货源抖音小店的店铺在出单后怎么发货&#xff1f;今天我就来给大家解答这个问题&#xff0c;其中的注意事项新手商家可以收藏一下&#xff0c;避免犯错 抖音小店的商品出单后&#xff0c;商家在“管理中心-订单管理”页面就能看见所有待处理的订单 一…

IDEA中开发并部署运行WEB项目

IDEA中开发并部署运行WEB项目 1 WEB项目的标准结构2 WEB项目部署的方式3 IDEA中开发并部署运行WEB项目3.1 部署步骤3.2 IDEA关联本地Tomcat 4 IDEA创建web工程5 IDEA部署-运行web项目6 IDEA部署并运行项目的原理 1 WEB项目的标准结构 一个标准的可以用于发布的WEB项目标准结构如…

如何快速实现Java发送邮件功能?

如何使用JAVA发送邮件&#xff1f;&#xff08;不做过多文字解释&#xff0c;详细说明请看代码注释&#xff09; 一&#xff0c;引用相关pom二&#xff0c;实现代码&#xff08;代码参考图片内容&#xff09;三&#xff0c; 接收邮件 一&#xff0c;引用相关pom <dependency…

24长三角C题9页完整建模思路+可执行代码

比赛题目的完整版思路可执行代码数据参考论文都会在第一时间更新上传的&#xff0c;大家可以参考我往期的资料&#xff0c;所有的资料数据以及到最后更新的参考论文都是一次付费后续免费的。注意&#xff1a;&#xff08;建议先下单占坑&#xff0c;因为随着后续我们更新资料数…

信息安全相关内容

信息安全 安全防护体系 安全保护等级 安全防护策略 安全技术基础 安全防护体系 安全防护体系有7个等级 安全保护等级 安全保护等级有5个等级,从上到下是越来越安全的用户自主其实就是用户自己本身具有的相应的能力 安全防护策略 安全策略是对抗攻击的主要策略安全日志: …

Java Chassis 3:接口维度负载均衡

本文分享自华为云社区《Java Chassis 3技术解密&#xff1a;接口维度负载均衡》&#xff0c;作者&#xff1a; liubao68。 Java Chassis 3技术解密&#xff1a;接口维度负载均衡 在Java Chassis 3技术解密&#xff1a;负载均衡选择器中解密了Java Chassis 3负载均衡在解决性能…

社交媒体数据恢复:事秘达

社交软件-事秘达的数据恢复教程如下&#xff1a; 首先&#xff0c;你需要停止使用事秘达应用&#xff0c;以避免覆盖已经删除的数据。 接着&#xff0c;你需要连接你的手机到电脑上&#xff0c;并打开手机的USB调试功能。这可以让电脑读取你手机的数据。 下载并安装一个数据恢…

重生奇迹MU快速获取经验解析

重生奇迹MU觉醒卡级怎么办快速获取经验攻略&#xff0c;在游戏中卡级是玩家会遇到的情况之一&#xff0c;面对打不过的敌人和过不去的主线&#xff0c;想办法升级才是最主要的&#xff0c;游戏中有很多获取经验的途径。下面让我们一起来了解一下卡级后获取经验的攻略&#xff0…

PatterNodes 3 mac矢量图设计 ,色彩与图案的完美融合!

PatterNodes 3 for Mac是一款功能强大的矢量图形模式创建软件&#xff0c;专为Mac用户设计。它采用基于节点的界面&#xff0c;支持创建形状、线条、曲线或文本&#xff0c;以构建复杂的矢量图形模式。该软件还具备灵活的参数调整功能&#xff0c;允许用户实时预览结果并进行无…

PLCnext用三种方式去编写一个功能块

先前提到的基于eCLR&#xff0c;PLCnext可以通过几种高级语言编写功能块、函数、等等&#xff0c;今天我们来试一下利用IEC61131、C、C#去制作加法功能块。 1.准备工具 PLCnext Engineer & 1152 Simulator PLCnext Engineer是上位编程软件&#xff0c;免费&#xff0c;11…

通俗易懂的策略模式讲解

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

ACM实训冲刺第八天

【碎碎念】由于昨天做的题都有思路&#xff0c;加上今天有点疲惫&#xff0c;故今天先不复习了&#xff0c;直接开始今天的算法学习 Tokitsukaze and All Zero Sequence 问题 思路 读入测试用例数&#xff1a;首先读取一个整数t&#xff0c;表示接下来会有t组数据需要处理。遍…