在fnmatch.filter中使用OR或AND可以通过使用列表推导式来实现。
如果要使用OR操作符,可以将多个模式作为列表传递给fnmatch.filter,并使用任意模式匹配成功即可。例如:
import fnmatch
patterns = ['*.txt', '*.csv']
files = ['file1.txt', 'file2.csv', 'file3.jpg']
result = [file for file in files if any(fnmatch.fnmatch(file, pattern) for pattern in patterns)]
print(result)
输出:
['file1.txt', 'file2.csv']
如果要使用AND操作符,可以将多个模式作为列表传递给fnmatch.filter,并使用所有模式都匹配成功才返回结果。例如:
import fnmatch
patterns = ['file*.txt', 'file*.csv']
files = ['file1.txt', 'file2.csv', 'file3.jpg']
result = [file for file in files if all(fnmatch.fnmatch(file, pattern) for pattern in patterns)]
print(result)
输出:
['file1.txt', 'file2.csv']
在以上示例中,我们使用了列表推导式来筛选出符合条件的文件名。fnmatch.fnmatch函数用于模式匹配,any函数用于判断列表中是否有任意一个元素为True,all函数用于判断列表中所有元素是否都为True。
关于fnmatch模块的更多信息,可以参考腾讯云文档中的介绍:fnmatch模块
领取专属 10元无门槛券
手把手带您无忧上云