python 通配符_用Python打造一款文件搜索工具,所有功能自己定义

dbc091885b49cc2c04baf6098d130eb0.png

前言

在日常的办公中,我们经常会从一堆不同格式的文件(夹)中搜索特定的文件,可能你是凭着记忆去找或是借助软件,但你有想过如何用Python实现吗?本文将基于几个常见的搜索操作讲解。

点击此处,获取海量Python学习资料!

扫描路径内的内容

有些时候我们会希望在当前文件夹的成百上千个文件中快速找到需要的文件,如果这个文件夹又包括很多个子文件夹,并不需要程序进去查找而无端耗费资源。这就是典型的"扫描一层搜索"

1. 基于 os.scandir()

需求说明

输出C:Program Files (x86)路径下名字包含“Windows”的文件夹名称,并统计个数

步骤分析

这是一个非遍历的需求,只需要在目的文件夹内扫描一圈判断即可。用到的方法是os.scandir(),使用如下:

47615b2d6ad242a046c35edb4c8c64fc.png

上面代码最后输出的是给定路径下各内容的名字、绝对路径,并判断其是否是文件夹

需要注意的是os.scandir()只在路径下一级扫描,需求实现的代码如下(代码逻辑很简单,可以自己做相应调整):

d271886e26f8c161641fcf9553e056cc.png

d6f561d9aee174eaa4634b312d786045.png

2. 基于 os.listdir()

需求说明

输出C:Program Files (x86)路径下所有可执行文件 (即后缀为 .exe)

步骤分析

依然是非遍历的需求,这里使用os.listdir(),它比os.scandir()简单一些,可直接调用输出名称而非路径。后缀名可以用字符串的切片来判断,但难免失去灵活性。此时建议用字符串方法string.endswith()来判断名称的结尾是否是.exe,代码如下:

f81c6461645e77cde104517016ce924c.png

4add0dd46e9a7a74a598a09fec8ecbcb.png

遍历文件夹搜索文件

更多时候我们希望给定一个大概的路径,在这个路径下的所有文件夹里一层一层找,找到特定文件或者符合要求的文件,这里需要遍历文件,有两种主要的方法:

1. 基于 os.walk()

os.walk 遍历后产生三个参数:当前文件夹路径, 包含文件夹名称 [列表形式], 包含文件名称[列表形式]

可以用如下代码完成简单遍历:

13981f4cee2004eb9b2b446e9878276d.png

需求说明

遍历C:Program Files (x86)找出所有新版Excel文件 (即后缀为.xlsx)

步骤分析

只要理解了os.walk()的工作模式,用endswith()判断后缀即可。最后如果需要获得绝对路径可以把当前文件夹路径和文件名拼接,简单一点用 + 或者字符串格式化,也可以用os模块内的方法

4f8ffbb99fd9761d621ae39926aba7e9.png

2. 基于非 os 方法:glob

glob在之前的推文也反复提到遍历框架:

da0757b93af696a96c1cf99c24835fef.png

**/*的使用表示用通配符指代给定路径下的任何一层,recursive参数允许遍历搜索 由于glob可以使用"通配符",大大拓宽了灵活程度,这里利用 glob 也来完成上面的需求

需求说明

遍历C:Program Files (x86)找出所有新版Excel文件(即后缀为.xlsx)

3fbbf78f833d69fe5093b81fa880306e.png

可以看到非常简单,在原有代码基础上加上后缀名就能够完成特定类型文件的搜索。如果需要搜索"特定文件",如遍历C:Program Files (x86)找到文件practice.txt,"只需要后一个*改成具体名称就行"

d5f252bd97733cf89fd543bcbdb6a02c.png
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值