Python 自动化办公实战课
尹会生
前游戏公司技术总监,前新浪网研发中心技术经理
21781 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 37 讲
Python 自动化办公实战课
15
15
1.0x
00:00/00:00
登录|注册

09|扩展搜索:如何快速找到想要的文件?

如何将通配符和要搜索的关键字进行组合
从文件搜索
写入索引文件
读取配置文件和搜索的自定义函数
.ini文件格式
迭代器
从文件路径末尾向前进行匹配
通配符
实现方法
空间换时间
实现方法
配置文件格式
返回值
rglob()函数
glob()函数
扩展locate.py的搜索功能
服务器领域的应用
利用索引文件减少等待时间
建立索引文件
指定搜索路径
Python的pathlib库
思考题
总结
提升搜索效率的两种方法
基础搜索方法
扩展搜索:如何快速找到想要的文件?

该思维导图由 AI 生成,仅供参考

你好,我是尹会生。
工作时间越久,你就会发现,自己电脑里存储的办公文件也越来越多。一旦需要紧急找到某个文件,你又恰巧忘记了文件被存放的具体位置,就只能通过 Windows 的搜索功能对文件名称进行搜索,不过你大概率需要长时间等 Windows 的搜索结果。
之所以查找文件的时间过长,主要有两个原因。
搜索范围太大。搜索过程中可能包含了大量的操作系统或应用软件的缓存文件等无效路径,导致搜索时间过长。
受到硬盘文件数量过多的影响。硬盘的文件数量越多,完整搜索一遍所有文件的时间就越长。
那有没有办法提高搜索的效率,快速找到你想要的文件呢?基于以上两种原因,相应的,我们可以在 Python 中采用指定搜索路径范围和提前建立文件索引的两种方案实现文件的搜索功能。
这两种方案都是基于 Python 的基本搜索方法实现的,因此我先来带你学习一下如何用 Python 的 pathlib 库实现基础文件的搜索。

基础搜索方法:用 pathlib 库搜索文件

用 Python 搜索文件时需要使用 pathlib 库的 glob() 函数和 rglob() 函数,glob() 函数可以实现基于文件名的搜索方法,rglob 函数可以实现基于扩展名的搜索方法。
我先来给你看一下 Python 实现基础搜索功能的代码,通过代码来为你讲解一下 Python 是如何搜索到一个文件的:
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

文章标题:利用Python的pathlib库实现高效文件搜索 本文介绍了如何使用Python的pathlib库实现高效的文件搜索。首先,通过使用glob()函数和rglob()函数实现基础搜索功能,并详细解释了它们的参数和返回值。其次,介绍了通过指定搜索路径和建立索引文件两种方法来提高搜索效率。指定搜索路径的方法通过配置文件的方式实现,通过读取配置文件和自定义函数来实现多个目录的搜索。最后,通过建立索引文件的方法,将所有的文件名提前存储下来作为文件的索引,下次再查找的时候直接查找索引文件,就能得到搜索结果,而不必再通过硬盘查找真实的文件了。文章还提供了示例代码来展示如何在Python中实现在多个路径搜索文件的功能。总的来说,本文以Python为工具,通过pathlib库提供了一种灵活且高效的文件搜索方法,适用于需要快速找到文件的读者。文章内容涵盖了基础搜索功能、指定搜索路径和建立索引文件的方法,为读者提供了多种选择来提高文件搜索效率。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《Python 自动化办公实战课》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(5)

  • 最新
  • 精选
  • 回到原点
    def search_ext(file_ext): with open(dbfile, encoding='utf-8') as f: for line in f.readlines(): if line.rstrip().endswith(file_ext): print(line.rstrip()) if __name__ == "__main__": search_ext('.jpg')

    作者回复: 赞

    2021-03-28
    2
  • Geek_cdcb96
    def write_to_db(): """ 写入索引文件 """ current_path = pathlib.PurePath(__file__).parent dbfile = current_path.joinpath("search.db") with open(dbfile, 'w', encoding='utf-8') as f: for r in result: f.write(f"{str(r)}\n") 请问老师,这个函数中的result变量是在哪里定义的? 没有在函数中定义,是不是用的函数外部的result,但是也没有指定为全局变量,关键是最后没有报错。 还有一个问题,我使用locate_file()函数对文件较多的目录进行搜索时,显示直接跳出了,没有返回目录中的文件,但是在命令行条件下可以返回。是怎么回事。

    作者回复: 1 result 之前定义过,所以没有报错,可参考完整代码 2 初步怀疑是执行命令的“当前目录”不一样导致的问题,可以在循环处理目录之前,增加print() 函数,在遍历前打印要遍历的目录,往往能快速定位问题

    2022-05-28
  • Soul of the Dragon
    老师,我按照您之前说的,用.py格式的脚本文件运行“current_path = pathlib.PurePath(__file__).parent”这一行代码,为什么还是会出现“NameError: name '__file__' is not defined”这样的报错?

    作者回复: file前后是两个“_” 可以先确认一下,或者参考我为这一讲写的演示代码,看下是否有书写错误的问题

    2021-03-02
    3
  • ifelse
    学习打卡
    2023-07-08归属地:浙江
  • 琥珀·
    expanded_name = "jpg" with open(dbfile, encoding='utf-8') as f: for line in f.readlines(): if re.search(f".*{expanded_name}", line, flags=re.IGNORECASE): print(line.rstrip())
    2021-03-14
收起评论
显示
设置
留言
5
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部