前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >如何在电脑成千上万支文件中找到想要的文件?

如何在电脑成千上万支文件中找到想要的文件?

作者头像
极简小课
发布2022-06-21 18:29:56
1.1K0
发布2022-06-21 18:29:56
举报
文章被收录于专栏:极简小课极简小课

本篇文章主要介绍利用Python写段小程序,来快速找到自己想要的文件。

废话不多说,先上代码,然后再解释。

代码语言:javascript
复制
import os
def findfiles(name, path):
    # 定义保存查找结果的数组
    search_result = []
    # 利用os.walk函数遍历路径下的所有文件
    for dir_path, dir_names, filenames in os.walk(path):
        for filename in filenames:
            if name in filename:
                search_result.append(os.path.join(dir_path, filename))
    # enumerate函数会以list的形式返回列表的下标和值
    for index, value in enumerate(search_result):
        # 在查找结果里,按照序号、文件名分行打印输出 
        print("[" + str(index+1) + ",", "'" + value + "'" + "]")


if __name__ == '__main__':
    search_path = input("请输入要搜索的路径:")
    file_name = input("请输入要查找的文件名字:")
    findfiles(file_name, search_path)

这段代码其实很简单,主要涉及两个主要的函数,一个是os模块的walk函数,一个是内置函数enumerate。

1. 我们先来看下walk函数,os.walk函数就是遍历所有文件,什么意思呢?就是如果你当前搜索的路径下还有文件夹,会继续进入到这个文件夹下查找文件,一层一层找下去,直到最后没有文件夹。

walk函数返回三个值:

dir_path: 当前搜索路径

dir_names: 当前路径下存在的所有文件夹

filenames: 当前路径下存在的所有文件

比如下面例子,在文件夹"100days"下面,有个"day01"文件夹,但是没有文件, 所以第三个值是空的列表,然后会进入"day01"文件夹继续找文件,发现已经没有文件夹了,只有两支文件。

代码语言:javascript
复制
F:\Study\Python\100days ['day01'] []
F:\Study\Python\100days\day01 [] ['flag.py', 'peppa_pig.py']

2. enumerate函数是python内置函数,用于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列,同时列出数据和数据下标,一般用在 for 循环当中。

什么意思呢?就是在for循环里用enumerate作用一个可遍历的对象,不但会返回对象里的每个值,还会返回值对应的下标,有时候我们需要用到值对应的下标,所以就会使用enumerate函数,写段小代码演示下

代码语言:javascript
复制
names = ["张三", "李四", "小明", "大名"]
for index, name in enumerate(names):
    print(index, name)
代码语言:javascript
复制
输出结果:
          0 张三
          1 李四
          2 小明
          3 大名

这样我们就知道张三在第一个位置,李四在第二个位置等等。

最后来看下总程序执行结果:

比如在电脑的F:\Study\Python路径下查找名字包含day的文件,结果如下:

扩展:

os模块下还有一个函数也是用来查找文件,就是os.listdir,和os.walk的区别就是,os.listdir只会返回当前路径下的所有文件夹和所有文件,不会继续再深入下一层文件夹继续查找。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-05-09,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 极简小课 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云开发 CloudBase
云开发(Tencent CloudBase,TCB)是腾讯云提供的云原生一体化开发环境和工具平台,为200万+企业和开发者提供高可用、自动弹性扩缩的后端云服务,可用于云端一体化开发多种端应用(小程序、公众号、Web 应用等),避免了应用开发过程中繁琐的服务器搭建及运维,开发者可以专注于业务逻辑的实现,开发门槛更低,效率更高。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档