Python如何快速查找文件

描述

因为平时用everything很舒服,查找文件是真的很方便,

但是既然用到了Python,就想到可不可以来自己实现一下,

下面的分析是针对一个目录来查找的,当你知道文件大致有什么东西的时候,

比如你要查找 md 结尾的的文件,又大致知道在哪个目录的时候,就可以来自己查找。

下面是我自己临时创建的一个目录 C:\\tmp\\test

当前的文件结构如下:

|-- C:\\tmp\\test
    |-- 1.log
    |-- result.txt
    |-- test.md
    |-- cool
    |   |-- cool.md
    |   |-- cool_sub
    |       |-- sub.md
    |-- how
        |-- how.md

这里用到了os模块下的walk函数,它会自动递归遍历一个目录下的所有子目录:

import os

PATH = r'C:\\tmp\\test'

for root, dirs, files in os.walk(PATH):
    print('root: ', root)
    print('dirs: ', dirs)
    print('files: ', files)
    print('---------------------------------------')

输出:

root:  C:\\tmp\\test
dirs:  ['cool', 'how']
files:  ['1.log', 'result.txt', 'test.md']
---------------------------------------
root:  C:\\tmp\\test\\cool
dirs:  ['cool_sub']
files:  ['cool.md']
---------------------------------------
root:  C:\\tmp\\test\\cool\\cool_sub
dirs:  []
files:  ['sub.md']
---------------------------------------
root:  C:\\tmp\\test\\how
dirs:  []
files:  ['how.md']
---------------------------------------

从上面可以看出,root 是每一个目录,

dirs 是 root 这个目录下所有的文件夹,

files 是 root 这个目录下所有的文件

我们这个时候如果想查找 md 结尾的文件,就可以用下面的方法:

import glob

print("找出的文件如下: ")
for root, dirs, files in os.walk(PATH):

    # glob可以用正则表达式查找一个目录下匹配的文件名
    file_pattern = os.path.join(root, '*.md')
    for f in glob.glob(file_pattern):
        print(f)

输出:

找出的文件如下:
C:\\tmp\\test\\test.md
C:\\tmp\\test\\cool\\cool.md
C:\\tmp\\test\\cool\\cool_sub\\sub.md
C:\\tmp\\test\\how\\how.md

这里我们可以加上找出的文件个数,

len是Python内置的函数,可以获取一个列表的长度:

files = [1, 2, 3]
len_files = len(files)
print("列表的长度是:", len_files)

输出:

列表的长度是: 3

最终的代码如下:

import osimport glob

PATH = r'C:\\tmp\\test'

file_list = []
for root, dirs, files in os.walk(PATH):

    file_pattern = os.path.join(root, '*.md')
    for f in glob.glob(file_pattern):
        file_list.append(f)

print("一共找出 %d 个文件" % len(file_list))
print("找出的文件如下: ")
for f in file_list:
    print(f)

输出:

一共找出 4 个文件
找出的文件如下:
C:\\tmp\\test\\test.md
C:\\tmp\\test\\cool\\cool.md
C:\\tmp\\test\\cool\\cool_sub\\sub.md
C:\\tmp\\test\\how\\how.md
打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
评论(0)
发评论
jf_27080666 2023-03-31
0 回复 举报
老师,您好,想问一下你的公众号叫什么名字 收起回复

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分