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

news2025/1/19 23:16:30

实验十二 文件处理

第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)

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

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

相关文章

【WEEK12】 【DAY3】整合MyBatis框架【中文版】

2024.5.15 Wednesday 目录 13.整合MyBatis框架13.1.整合测试13.1.1.新建springboot-05-mybatis项目13.1.2.导入MyBatis需要的依赖13.1.3.配置数据库连接信息13.1.3.1.修改application.properties13.1.3.2.修改Springboot05MybatisApplicationTests.java并测试 13.1.4.新建pojo文…

Spring使用小技巧--排除bean无法被调用问题

我们在项目中可能由于项目的复杂性&#xff0c;创建了个spring的bean&#xff0c;但是调用却出现报错&#xff0c;显示无法找到该bean的异常。 这个时候我们就需要找到出错的原因&#xff0c;很多人往往会忽略的一点就是&#xff0c;你所创建的bean有可能并没有被加载到ioc容器…

【Linux系统编程】第十九弹---进程状态(下)

​​​​​​​ ✨个人主页&#xff1a; 熬夜学编程的小林 &#x1f497;系列专栏&#xff1a; 【C语言详解】 【数据结构详解】【C详解】【Linux系统编程】 目录 1、僵尸进程 2、孤儿进程 3、运行状态 4、阻塞状态 5、挂起状态 6、进程切换 总结 1、僵尸进程 上一弹…

算法练习第22天|39. 组合总和、40.组合总和II

39. 组合总和 39. 组合总和 - 力扣&#xff08;LeetCode&#xff09;https://leetcode.cn/problems/combination-sum/description/ 题目描述&#xff1a; 给你一个 无重复元素 的整数数组 candidates 和一个目标整数 target &#xff0c;找出 candidates 中可以使数字和为目标数…

Unity Mirror 从入门到入神(一)

Mirror从入门到成神 文章目录 Mirror从入门到成神简介NetworkClientRegisterPrefabConnect (string address)Disconnect ()activeactiveHost NetworkServerSpawn 简介 Mirror是一个unity网络同步框架&#xff0c;基于MonoBehaviour生命周期的回调的基础上进行数值的同步&#…

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

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

什么是检索增强生成(Retrieval Augmented Generation)?RAG 架构如何实现?

检索增强生成&#xff08;Retrieval Augmented Generation&#xff09;时代 在不断发展的生成人工智能世界中&#xff0c;检索增强生成 (RAG) 标志着一项重大进步&#xff0c;它将检索模型的准确性与生成模型的创造性相结合&#xff0c;达到了准确&创新的更高层级。 这种…

摸鱼大数据——Linux搭建大数据环境(Hadoop高可用环境搭建)六

Hadoop高可用环境搭建 确定提前安装好了hadoop和zookeeper 1.删除原有数据文件 三台机器都要进行删除 可以使用CRT发送交互到所有会话 rm -rf /export/data/hadoop-3.3.0 2.安装软件 三台机器都要进行安装 注意: 如果网络较慢安装失败,那就重复安装即可 # 实现多个服务的通讯 …

数字水印 | 奇异值分解 SVD 的 Python 代码实现

&#x1f951;原理&#xff1a;数字水印 | 奇异值分解 SVD 的定义、原理及性质 &#x1f951;参考&#xff1a;Python 机器学习笔记&#xff1a;奇异值分解&#xff08;SVD&#xff09;算法 正文 对于一个图像矩阵&#xff0c;我们总可以将其分解为以下形式&#xff1a; 通过…

Halcon 根据XYZ生成3D模型

Halcon 根据XYZ生成3D模型 x_points := [a_x_points, b_x_points, c_x_points]y_points := [a_y_points, b_y_points, c_y_points]z_points := [a_z_points, b_z_points, c_z_points]stop()gen_object_model_3d_from_points

某单位Oracle数据库性能优化方案参考

内容分析&#xff1a; 本文是一篇关于XX市XX单位中心数据库优化方案的详细报告。文章首先描述了数据库的现状&#xff0c;包括其运行的软件环境、硬件环境、数据存储情况以及与检测点的连接方式。接着&#xff0c;文章列出了信息系统优化的常用策略&#xff0c;并具体解释了每一…

线性回归模型之套索回归

概述 本案例是基于之前的岭回归的案例的。之前案例的完整代码如下&#xff1a; import numpy as np import matplotlib.pyplot as plt from sklearn.linear_model import Ridge, LinearRegression from sklearn.datasets import make_regression from sklearn.model_selectio…

对抗生成网络(GAN),DCGAN原理

目录 1. GAN基础原理 1.1 生成器 1.2 判别器 1.3 整体架构 2. 损失函数 3. DCGAN 3.1 问题 3.2 解决 1. GAN基础原理 GAN&#xff08;Generative Adversarial Nets&#xff09;是一种深度神经网络架构。它由生成器和判别器组成&#xff0c;生成器学习真实样本&#x…

微信公众号自定义分销商城小程序源码系统 带完整的安装代码吧以及系统部署搭建教程

系统概述 微信公众号自定义分销商城小程序源码系统是一款功能强大的电商解决方案&#xff0c;它集成了商品管理、订单处理、支付接口、分销管理等多种功能。该系统支持自定义界面设计&#xff0c;商家可根据自身需求调整商城的页面布局和风格&#xff0c;打造独特的品牌形象。…

月薪20K+的策划人简历应该怎么写?

一般咱们大多数策划在写简历前&#xff0c;都是先直接找模板&#xff0c;然后按照模板的框架直接往里面填内容。 最后草草收场&#xff0c;直接拿去海投简历&#xff0c;结果发现没有拿到任何面试邀约。 策划写简历前的第一件事要梳理自己的能力模型和岗位JD。 因为只有先梳…

解决谷歌浏览器无法登陆网站的问题,左下角弹出JavaScript(void:0)

破釜沉舟&#xff0c;全都试一遍&#xff1a; 如果还不行&#xff0c;那就关闭GPU加速&#xff1a;关了瞬间就好了 关闭之后&#xff0c;再打开GPU加速还是行的&#xff08;咱也不知道为啥呀&#xff09;

究极完整版!!Centos6.9安装最适配的python和yum,附带教大家如何写Centos6.9的yum.repos.d配置文件。亲测可行!

前言&#xff01; 这里我真是要被Centos6.9给坑惨了&#xff0c;最刚开始学习linux的时候并没有在意那么的&#xff0c;没有考虑到选版本问题&#xff0c;直到23年下半年&#xff0c;官方不维护Centos6.9了&#xff0c;基本上当时配置的文件和安装的依赖都用不了了&#xff0c…

DCMM(数据管理能力成熟度模型)对企业的价值

随着大数据时代的来临&#xff0c;数据已成为企业发展的重要驱动力。为了有效地管理和利用数据&#xff0c;企业需要建立一套完善的数据管理体系&#xff0c;而DCMM&#xff08;数据管理能力成熟度模型&#xff09;正是这样一个帮助企业构建和优化数据管理能力的框架。 DCMM结构…

05-应用级开发者 AI 时代破局点

后端应用级开发者该如何拥抱 AI GC&#xff1f;就是在这样的一个大的浪潮下&#xff0c;我们的传统的应用级开发者。我们该如何选择职业或者是如何去快速转型&#xff0c;跟上这样的一个行业的一个浪潮? 0 AI金字塔模型 越往上它的整个难度就是职业机会也好&#xff0c;或者说…

Ubuntu 24 换国内源及原理 (阿里源)

备份原文件 sudo cp /etc/apt/sources.list.d/ubuntu.sources /etc/apt/sources.list.d/ubuntu.sources.bak 编辑源文件 sudo gedit /etc/apt/sources.list.d/ubuntu.sources &#xff08;阿里源&#xff09; Types: deb deb-src URIs: https://mirrors.aliyun.com/ubunt…