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

2024-06-16 09:16:26 发布

您现在位置:Python中文网/ 问答频道 /正文

基本上,我希望文件名以扩展名列表中的扩展名结尾。 这是我用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中是否有一种更高效或更短的方法来完成同样的事情。 谢谢你


Tags: 代码in示例列表for文件名结尾extension
3条回答

您可以使用list comprehension来简洁地执行此操作:

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

工作原理:

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

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

endswith接受元组,因此非常简单:

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

相关问题 更多 >