在计算机的某个文件夹中,假如有一大堆不同格式的文件,如下图:
我们的目的:快速查找出文件名中包含某文字内容的指定格式的文件,看看它们都放在哪里?通过分析,可能在当前文件夹中也可能在某个子文件夹里,可以使用两种方法,解决这个查找问题!
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模块在文件查找方面更有优势。