1
我用這行過濾我的文件列表 'TXT' x.endswith(( 'DOC', ,'.dat')),os.listdir(path))過濾文件列表
上面這行只會過濾小寫的擴展名文件。因此,是否有一種優雅的方式可以讓它過濾大寫的擴展文件?
我用這行過濾我的文件列表 'TXT' x.endswith(( 'DOC', ,'.dat')),os.listdir(path))過濾文件列表
上面這行只會過濾小寫的擴展名文件。因此,是否有一種優雅的方式可以讓它過濾大寫的擴展文件?
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)
你只需要一個.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)]