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

27 篇文章 6 订阅

实验十二 文件处理

第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)
  • 21
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python语言程序设计是一种高级编程语言,常被用于开发各种应用程序。级网盘是一种网络存储服务,它允许用户将文件上传至云端,并能够随时随地访问和分享这些文件。 使用Python语言编写级网盘程序,可以实现以下功能: 1. 用户注册和登录:用户可以注册账号并进行身份验证,以便后续的文件上传和下载操作。 2. 文件上传和下载:用户可以通过网盘将本地文件上传至云端,并能够随时随地下载需要的文件。通过Python文件操作函数,可以实现文件的读取、写入和删除等功能。 3. 文件共享和权限控制:用户可以选择将文件设置为私有或公开,并可以与其他用户共享文件。可以使用Python的数据库技术,例如SQLite,来存储和管理用户和文件的权限信息。 4. 文件夹管理:用户可以创建文件夹进行文件的分类和组织,可以使用Python的目录操作函数实现文件夹的创建、删除和重命名等功能。 5. 文件搜索:用户可以通过关键词搜索文件,可以使用Python的字符串处理和搜索函数来实现文件搜索的功能。 6. 文件备份和恢复:用户可以选择将某些重要文件进行备份,并能够在需要时进行文件的恢复。可以使用Python的压缩和解压功能,对文件进行备份和恢复操作。 总之,使用Python语言编写级网盘程序可以实现用户文件的管理、共享和备份等功能,为用户提供方便快捷的云端存储服务。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值