我正在使用这一行过滤我的文件列表:
MyList = filter(lambda x: x.endswith(('.doc','.txt','.dat')), os.listdir(path))
上面的行将只过滤小写扩展文件。因此,是否有一种优雅的方法可以过滤大写扩展文件?
我正在使用这一行过滤我的文件列表:
MyList = filter(lambda x: x.endswith(('.doc','.txt','.dat')), os.listdir(path))
上面的行将只过滤小写扩展文件。因此,是否有一种优雅的方法可以过滤大写扩展文件?
你只需要在.lower()
你的 lambda 函数中添加一个
MyList = filter(lambda x: x.lower().endswith(('.doc','.txt','.dat')), os.listdir(path))
我更喜欢os.path.splitext
与列表理解一起使用
from os.path import splitext
my_list = [x for x in os.listdir(path) if splitext(x)[1].lower() in {'.doc', '.txt', '.dat'}]
单行还是有点多,所以也许
from os.path import splitext
def valid_extension(x, valid={'.doc', '.txt', '.dat'}):
return splitext(x)[1].lower() in valid
my_list = [x for x in os.listdir(path) if valid_extension(x)]
import os
import re
pat = re.compile(r'[.](doc|txt|dat)$', re.IGNORECASE)
filenames = [filename for filename in os.listdir(path)
if re.search(pat, filename)]
print(filenames)