2021SC@SDUSC移动互联网项目分析——网站搭建(三)

本文介绍了如何使用Python的os模块遍历文件夹,查找包含特定字符串的文件,以及对HTML文件进行特定内容的修改。涉及到的函数包括os.walk()、os.listdir()和str.find()。示例中展示了如何处理sample文件夹内每个子目录的HTML文件,分别在不同位置插入内容。
摘要由CSDN通过智能技术生成

2021SC@SDUSC

目录

介绍

所需基本知识

Python os.walk()

语法

参数

Python os.listdir()

语法

参数

Python find()方法

语法

参数

读取符合要求的文件目录

获取src路径下包含str(非str)的所有文件路径

获取src路径子目录文件中与子目录名相同的文件路径

对文件内容做处理


前文分析了如何将文本结构的目录转为html。在编写网站时,有时候需要对之前编写好的html页面进行修改,因此开发者编写python代码来修改html页面。本篇文章主要分析如何对已经编辑好的html文本进行修改。

介绍

在sample文件夹下的每个文件夹{filename}中有两个HTML文件{filename}.html、{filename+sample}.html,开发者完成的具体修改如下:

1.对{filename}.html的处理:在<div class="left">中加入一些<li>...

2.对{filename+sample}.html的处理:在</div></div>\n</body>\n</html>前加入一些<h2>...

所需基本知识

Python os.walk()

os.walk()方法通过在目录树中游走输出目录中的文件名(可以选择向上或向下)

os.walk()用类似于深度遍历的方式遍历文件夹中的子文件夹以及文件,它是一个简单易用的文件/目录遍历器,可以帮助我们高效的处理文件/目录方面的事情。在Unix、Windows中有效。

语法

os.walk(top[,topdown=True[,οnerrοr=None[,followlinks=False]]])  返回生成器

参数

1.top——要遍历的目录的地址,返回的是一个三元组(root,dirs,files)。

        root指当前正在遍历的文件夹本身的地址

        dis是一个list,内容是该文件夹中所有的目录的名字(不包括子目录)

        files同样是list,内容是该文件夹中所有的文件(不包括子目录)

2.topdown——可选,值为True时,则优先遍历top目录,否则优先遍历top的子目录(默认为开启)。如果 topdown 参数为 True,walk 会遍历top文件夹,与top 文件夹中每一个子目录。

3.onerror——可选,需要一个callable对象。当walk需要异常时,会调用

4.followlinks——可选,如果为True,则会遍历目录下的快捷方式实际所指的目录(默认关闭);如果为False,则优先遍历top的子目录。

Python os.listdir()

os.listdir()方法用于返回指定的文件夹包含的文件或文件夹的名字的列表。

它不包括"."和"..",即使它在文件夹中,只支持在Unix、Windows下使用。

语法

os.listdir(path)  返回指定路径下的文件和文件夹列表

参数

path——需要列出的目录路径

Python find()方法

Python find()方法检测字符串中是否包含子字符串str,如果指定 beg(开始) 和 end(结束) 范围,则检查是否包含在指定范围内,如果包含子字符串返回开始的索引值,否则返回-1。

语法

str.find(str,beg=0,end=len(string)),如果未指定beg和end,默认开始为0和len(string)。如果包含子字符串返回开始的索引值,否则返回-1。

参数

str——指定检索的字符串

beg——开始索引,默认为0。

end——结束索引,默认为字符串的长度。

读取符合要求的文件目录

获取src路径下包含str(非str)的所有文件路径

 定义函数getfilelist_1(),传入参数src(要遍历的目录地址)和str(特定字符)

首先定义列表filelist,存放src路径下包含str的文件路径;定义要遍历的目录地址file_dir,赋值为src

调用os.walk()函数,os.walk()是一个简单易用的文件/目录遍历器,可以帮助我们高效的遍历文件,返回一个生成器。传入file_dir(要遍历的目录的地址),可选参数topdown=False表示优先遍历file_dir下的子目录。

root指当前正在遍历的文件夹本身的地址;dis是一个list,内容是该文件夹中所有的目录的名字(不包括子目录);files同样是list,内容是该文件夹中所有的文件(不包括子目录)

 由于python中路径表达方式与我们读取到的路径呈现方式不一样,所以我们需要调用str.replace()函数将"\\"全替换为"/"。

用一个for循环遍历所有的子文件,用if语句来判断子文件路径包含str且不等于str,选出符合条件的文件后,返回文件路径

调用列表的append()方法,将修改后的路径名添加进数组

最后return filelist返回列表,得到src路径下包含str(非str)的所有文件路径

获取src路径子目录文件中与子目录名相同的文件路径

定义函数getfilelist_2(),传入参数src(根目录) 

首先定义列表filelist,存放src路径的子目录文件中与子目录名相同的文件路径

调用os.listdir(),传入参数src,os.listdir()方法用于返回指定的文件夹包含的文件或文件夹的名字的列表。将包含src文件夹包含的文件或文件夹名字的列表赋值给file_dir。

 

用for循环遍历file_dir中的文件或文件夹

用if语句通过调用str.find()方法查看文件/文件夹名是否包含"."和filename不为空,来判断遍历到的filename是否为不为空的文件夹

如果时文件夹则再调用os.listdir()获得此文件夹下的所有子文件,并赋值给sub_files

再用for循环遍历子文件夹下的所有文件,并通过if语句来判断文件名是否为{filename}.html

如果是则调用列表的append()方法,将这个文件的路径添加到filelist列表中。(开发者知道文件结构,因此只设定两层)

对文件内容做处理

定义addtofile方法,传入fileurl文件路径,target为要添加的字符,postion表示不同的添加字符。此方法主要对文件内容做处理,得到教学网站下载案例源码页面。

首先需要从fileurl中分出filename,方便之后的字符串拼接。

先调用str.find()方法得到"sample/"开始的索引,再加上"sample/"的长度得到"sample"结束的index,然后分出sample文件夹下的文件名,用str.find("/")找到这个第一个"/"的index2,最后通过字符串的分离,得到filename。

 拼接href和addstr,用html表示出要下载的示例app的压缩包。

 (由于篇幅和代码量较少不够分析等问题,处理文件剩下部分在下篇博客中。)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值