Python:检查以扩展名列表中存在的扩展名结尾的文件名

时间:2015-09-08 16:15:23

标签: python python-2.7

基本上我希望文件名以扩展名列表中的扩展名结尾。 这是我在python中的代码。 我已经将一些示例文件名作为列表,如下所示:

extensions = ['.mp3','.m4a','.wma']
filenames = ['foo1.mp3','foo2.txt','foo3.m4a','foo4.mp4']
for filename in filenames:
    for extension in extensions:
         if filename.endswith(extension):
             print filename
             break

这是有效的,但我很想知道在python中做同样的事情是否更有效或更短。 谢谢

3 个答案:

答案 0 :(得分:6)

endswith接受一个元组,所以非常简单:

exts = tuple(extensions)
[f for f in filenames if f.endswith(exts)]

答案 1 :(得分:1)

print [f for f in filenames if f[f.rindex('.'):] in extensions]

工作原理:

这是一个列表理解,所以有趣的部分是在“if”之后。

好吧,我们使用f.rindex('。')来查找文件名中的最后一个点。然后我们使用切片从那里到结尾获取f的一部分。最后,“在扩展名中”只是检查扩展名列表是否包含文件的扩展名。

答案 2 :(得分:0)

您可以使用list comprehension以简洁的方式执行此操作:

[f for f in filenames for e in extensions if f.endswith(e)]
相关问题