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

  • Post author:
  • Post category:python


哈喽我又㕛叒叕回来了!

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

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


超链接·目录


起始


完整代码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

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

——————————————————————————————————————————-

完整代码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


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



版权声明:本文为html_finder原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。