按条件自动搜索文件

简介: 按条件自动搜索文件

在计算机的某个文件夹中,假如有一大堆不同格式的文件,如下图:

image.png

我们的目的:快速查找出文件名中包含某文字内容的指定格式的文件,看看它们都放在哪里?通过分析,可能在当前文件夹中也可能在某个子文件夹里,可以使用两种方法,解决这个查找问题!

os模块实现
利用os模块的walk()方法来获取文件列表,再通过if条件语句筛选符合规则的文件。
导入使用的os模块,file_name是我们要查找的文件的名(可以是包含的部分文字),suffix_name是要查找的文件类型。os模块的walk()方法会递归来帮助我们获取文件夹中的所有文件,并得到一个文件列表。针对文件列表filenames中的每个文件,首先判断它是否包含file_name的suffix_name文件。如果同时满足这两个条件,再调用join()方法拼接出它的绝对路径,打印出最终的结果即可。
源码如下:

import os

file_name = input('请输入要查找的文件名(可以是包含的部分文字):')
suffix_name = input('请输入要查找的文件后缀名(文件类型,如"xlsx, doc, txt等"):')

# 本案例是指定的路径
path = '/Users/bruce_liu/Desktop'
for dirpath, dirnames, filenames in os.walk(path):
    for name in filenames:
        if f'{file_name}' in name and f'.{suffix_name}' in name:
            file_path = os.path.join(dirpath, name)
            print(file_path)

运行结果:

请输入要查找的文件名(可以是包含的部分文字):Python
请输入要查找的文件后缀名(文件类型,如"xlsx, doc, txt等"):md
/Users/bruce_liu/Desktop/xpath/爬虫案例/Python爬虫—requests模块.md
/Users/bruce_liu/Desktop/python-penetration/Python编写单词复习小程序.md
/Users/bruce_liu/Desktop/python-penetration/用Python编写背单词的小程序.md

glob模块实现
利用glob模块的正则通配符,来筛选符合规则的文件。
导入glob模块后,调用glob()方法,其中*搭配recursive参数,实现递归查找文件,file_name和suffix_name与“*”和path路径一起拼接要查找的文件路径下的指定条件的文件。源码如下:

import os
import glob

file_name = input('请输入要查找的文件名(可以是包含的部分文字):')
suffix_name = input('请输入要查找的文件后缀名(文件类型,如"xlsx, doc, txt等"):')

# 本案例是指定的路径
path = '/Users/bruce_liu/Desktop/'
# 遍历文件夹及文件夹
for file in glob.glob(os.path.join(path, f'**/*{file_name}*.{suffix_name}'), recursive=True):
    print(file)

两种方法中glob模块在文件查找方面更有优势。

相关文章
|
6月前
|
算法 前端开发
在系统中查找重复文件
在系统中查找重复文件
74 0
for循环 批处理 查找文件 详细信息 文件名
for循环 批处理 查找文件 详细信息 文件名
93 0
|
6月前
|
存储 算法 Linux
【Linux系统编程】深入理解Linux目录扫描函数:scandir目录函数(按条件扫描目录
【Linux系统编程】深入理解Linux目录扫描函数:scandir目录函数(按条件扫描目录
221 0
|
JavaScript
cnpm : 无法将“cnpm”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。请检查名称的拼写,如果包括路径,请确保路径正确,然后再试一次。所在位置 行:1 字符: 1
cnpm : 无法将“cnpm”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。请检查名称的拼写,如果包括路径,请确保路径正确,然后再试一次。所在位置 行:1 字符: 1
770 0
|
JavaScript
tsc : 无法将“tsc”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。请检查名称的拼写,如果包括路径,请确保路径正确,然后再试一次。
tsc : 无法将“tsc”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。请检查名称的拼写,如果包括路径,请确保路径正确,然后再试一次。
tsc : 无法将“tsc”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。请检查名称的拼写,如果包括路径,请确保路径正确,然后再试一次。
|
6月前
|
弹性计算 运维 Shell
遍历当前目录文件并执行检查
【4月更文挑战第30天】
46 0
|
Shell
SHELL脚本递归循环,文件名包含空格的处理办法
SHELL脚本递归循环,文件名包含空格的处理办法
182 0
Linux Ctrl r 快速查询历史命令并查找符合条件的多条命令
Linux Ctrl r 快速查询历史命令并查找符合条件的多条命令
|
Linux
LINUX脚本中如何判断相等
LINUX脚本中如何判断相等
121 0