只获取指定目录下所有指定后缀的文件名称,不要把子目录名字也加入列表,python中用glob.glob()函数实现

文章介绍了如何在Python中利用glob.glob函数来获取指定目录下特定后缀的文件名,强调了该方法不会包含子目录的名字,并且提供了不同示例,如查找XLSX文件、PNG图片以及包含特定字符的文件。同时对比了glob.glob与os.listdir的区别,后者会包含子目录名并且限制后缀名需要复杂代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

只获取指定目录下所有指定后缀的文件名称,不要把子目录名字也加入列表,python中用glob.glob()函数实现。

#仅仅把XLSX后缀的文件加入列表

import glob

xlsx_files_list = glob.glob(xlsx_files_path + r"\*.xlsx")   #这是一个带【绝对路径】的文件名列表!

rint("第42行,xlsx_files_list中文件数是:", len(xlsx_files_list))

-

glob模块是最简单的模块之一。

用它可以查找符合特定规则的文件路径名。

查找文件只用到三个匹配符:””, “?”, “[]”。

”匹配0个或多个字符;

”?”匹配单个字符;

”[]”匹配指定范围内的字符,如:[0-9]匹配数字。

”*.png”匹配后缀为png的所有文件;

-

# 只列png文件,不要把目录名字拉入列表,用glob.glob()函数实现


import glob

#获取指定目录下的所有图片
print (glob.glob(r"/home/*/*.png"),"\n")#加上r让字符串不转义


#获取上级目录的所有.py文件
print (glob.glob(r'../*.py')) #相对路径

特别注意:

一、得到的list列表,是一个带有路径和文件名的合集,不仅仅是文件名,还带有路径!

二、不包括子目录里的文件名。

三、windows系统下,文件名不区分大小写,所以应写作:

extensions = ['jpg', 'jpeg']

否则,文件会统计两遍。

-

-

另一种写法:

import glob
 
if __name__ == '__main__':
 
    file_out_dir = "D:\\code\\Python\\Data_out\\"
 
    id_file=file_out_dir+'*.csv'
    len_file=len(glob.glob(id_file))
    print(len_file)
    for file in glob.glob(id_file):
        print(file)

寻找包含特定字符的文件,可用如下代码用于找到包含特定字符“meinv”的文件

import glob
 
if __name__ == '__main__':
 
    file_out_dir = "D:\\code\\Python\\Data_out\\"
 
    id_file=file_out_dir+'*meinv'
    len_file=len(glob.glob(id_file))
    print(len_file)
    for file in glob.glob(id_file):
        print(file)

-

-

-

此外,注意:

若用os.listdir(files_path) 存在以下问题:

一、 把子目录名也加入列表了,目录名称被运算容易死机。文件夹中所有的文件和目录名称提取出来按顺序放进files_list列表中

二、若想限定后缀名,要用非常复杂的代码;

三、得到的是一个不带路径的文件名和目录名称的合集,是list列表。
# 把子目录名也加入列表了,子目录名称被运算容易死机。文件夹中所有的文件和目录名称提取出来按顺序放进files_list列表中
#若想限定后缀名,要用非常复杂的代码;
#得到的是一个不带路径的文件名、目录名称,合集的list。
 
files_list = os.listdir(files_path) 

筛选的代码如下:

folder = r"D:\aatest"
files = os.listdir(folder)
print(files)


def file_filter(f):
    if f[-4:] in ['.jpg', '.png', '.bmp']:
        return True
    else:
        return False

files = list(filter(file_filter, files))
print(files)

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值