Python遍历每个文件夹【包含子目录】可筛选类型

Python遍历每个文件夹【包含子目录】可筛选类型,第1张

哈喽我又㕛叒叕回来了!

--------------------------------------我是不重要分割线-------------------------------------------------------------------

----------------要直接看代码可以点击此处

超链接·目录

起始

完整代码1.0

完整代码2.0

完整代码3.0


起始
#coding=utf-8

Python2的人请自觉↑ 

只要用到-遍历-就要使用os模块

import os

关于import 的用法有很多,下次讲!

一般来说,我们用os.walk来进行——

完整代码1.0
for rt,dirs,fl in os.walk(r"path:路径",topdown=True):
    for nm in fl:
        print("文件:",str(rt)+"\"+str(nm))
    for _dir in dirs:
        print("目录:",str(rt)+"\"+str(_dir))

超链接·目录

起始

完整代码1.0

完整代码2.0

完整代码3.0


是不是很懵? 没有关系,我们一个个地讲。

-变量rt:[route]路径

文件所在路径[不包含文件名]

-变量dirs:[dir]目录下所有直接子文件夹

例:

dir_1

   |-  dir_2

   |        |- dir_3

   |-dir_2_1

当遍历到dir_1目录下时,dirs为:['dir_2','dir_2_1']

当遍历到dir_1下的dir_2目录时,dirs为['dir_3']

当遍历到dir_1下的dir_2下的dir_3目录时,dirs为[](没有子文件夹了)

-变量fl:[files]目录下所有直接文件名,同dirs,只不过将目录名变成了文件名,是很多个nm的集合列表

-变量nm:【name】文件名(带后缀)

-变量_dir:[dir]具体的每一个目录名

---------------------------------------------------------------------------------------------------------------------------------

好的接下来我们推出:

完整代码2.0

for rt, dirs, fl in os.walk(r"path:路径", topdown=True):
    for nm in fl:
        if (nm.lower().endswith(".文件后缀1") or
            nm.lower().endswith(".文件后缀2") or
            nm.lower().endswith(".文件后缀3")):
            print(str(rt) + "\" + str(nm))
###例子:
for rt, dirs, fl in os.walk(r".\ExcelFiles", topdown=True):
    for nm in fl:
        if (nm.lower().endswith(".xlsx") or
            nm.lower().endswith(".xlsm") or
            nm.lower().endswith(".xls")):
            print(str(rt) + "\" + str(nm))

超链接·目录

起始

完整代码1.0

完整代码2.0

完整代码3.0


每个变量的意思请见前文

效果:可以将所有指定后缀的文件筛选出来

如:目录

dir1

  |-file.txt

  |-file.bat

  |-dir2

  |   |-file2.txt

  |   |-dir3

  |   |   |-file3.txt

运行代码:

for rt, dirs, fl in os.walk(r"dir", topdown=True):
    for nm in fl:
        if (nm.lower().endswith(".txt")):
            print(str(rt) + "\" + str(nm))

 出现的效果:

dir1\file.txt
dir1\dir2\file2.txt
dir1\dir2\dir3\file3.txt

明白了吗?判断文件名是否以指定后缀结尾(函数的具体用法看之前的里的字符串),然后输出

-------------------------------------------------------------------------------------------------------------------------------

完整代码3.0
lists=[]
for rt, dirs, fl in os.walk(r"path:路径", topdown=True):
    for nm in fl:
        if (nm.lower().endswith(".文件后缀1") or
            nm.lower().endswith(".文件后缀2") or
            nm.lower().endswith(".文件后缀3")):
            print(str(rt) + "\" + str(nm))
            lists.append(str(rt) + "\" + str(nm))
###例子:
lists=[]
for rt, dirs, fl in os.walk(r".\ExcelFiles", topdown=True):
    for nm in fl:
        if (nm.lower().endswith(".xlsx") or
            nm.lower().endswith(".xlsm") or
            nm.lower().endswith(".xls")):
            print(str(rt) + "\" + str(nm))
            lists.append(str(rt) + "\" + str(nm))

超链接·目录

起始

完整代码1.0

完整代码2.0

完整代码3.0


没啥可说的,就是多了一个列表

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/798242.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-06
下一篇 2022-05-06

发表评论

登录后才能评论

评论列表(0条)

保存