Python遍历文件目录查询,拥有相同关键字的文件

Python(os.walk)

import os
import os.path
path = input('请输入你要查找的文件顶层目录')#输入需要查询的文件目录
file_name = input('请输入你要查找的文件名字')#输入需要查询的文件名称,或者关键词
def select_file():#定义查询函数
    global PD#定义全局变量PD用来检测是否查询到程序,通过判断该值来判断是否查询到程序
    PD = 0#我这里定义查询到为1,未查询为0
    for root,filenames,filename in os.walk(path):#os.walk模块,返回三个值1.当前目录2.当前目录下文件夹名称3.当前目录下文件的名称
        for name in filenames:#文件夹
            if name == file_name:#判断是否有存在该名字的文件夹存在则输出,不存在跳过
                print(os.path.join(root,name))#用os.path.join的方式将当前文件目录和文件名相加输出
                PD = 1#当查找到文件就改变PD的值用来做后续判断
        for name in filename:#文件
            if name == file_name:#判断是否有该名字的文件,有则输出,没有就跳过
                print(os.path.join(root,name))#用os.path.join的方式将当前文件目录和文件名相加输出
                PD = 1#当查找到文件就改变PD的值用来做后续判断
        file_namestr = set(file_name)#全称判断完,进入检查关键字环节,首先将要查询的名字转换为不会重复的set(集合的形式),要是list形式文件中有重复的关键词会给调用两遍,输出两遍
        for name in filenames:#文件夹
            filenames_str = set(name)#将遍历出来的文件夹名字str转化成set,这样进行单个字的遍历
            for name_PD in file_namestr:
                for name_str in filenames_str:
                    if name_PD ==name_str:#对比判断,要是存在相同的str,则输出
                        print(os.path.join(root,name))#用os.path.join的方式将当前文件目录和文件名相加输出
                        PD = 1#当查找到文件就改变PD的值用来做后续判断
        for name in filename:#文件
            filename_str = set(name)#将遍历出来的文件夹名字str转化成set,这样进行单个字的遍历
            for name_PD in file_namestr:
                for name_str in filename_str:
                    if name_PD == name_str:#判断
                        print(os.path.join(root,name))#输出
                        PD = 1#改变值
select_file()
if PD == 0:#当查找结束,判断PD的值,如果是没查找到会是之前的0,查找到则改变为1
    print('你查找的文件不存在这个目录下')

运行示例如下,查询F盘某文件下,存在表关键字的文件和文件夹,返回文件路径
输出示例

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值