使用带有多个扩展名的endswith

时间:2014-04-02 13:18:56

标签: python list file

我试图检测带有扩展名列表的文件。

ext = [".3g2", ".3gp", ".asf", ".asx", ".avi", ".flv", \
                        ".m2ts", ".mkv", ".mov", ".mp4", ".mpg", ".mpeg", \
                        ".rm", ".swf", ".vob", ".wmv"]
if file.endswith(ext): # how to use the list ?
   command 1
elif file.endswith(""): # it should be a folder
   command 2
elif file.endswith(".other"): # not a video, not a folder
   command 3

2 个答案:

答案 0 :(得分:70)

使用元组。

>>> ext = [".3g2", ".3gp", ".asf", ".asx", ".avi", ".flv", \
                        ".m2ts", ".mkv", ".mov", ".mp4", ".mpg", ".mpeg", \
                        ".rm", ".swf", ".vob", ".wmv"]

>>> ".wmv".endswith(tuple(ext))
True
>>> ".rand".endswith(tuple(ext))
False

不是每次都进行转换,只需将其转换为元组一次。

答案 1 :(得分:6)

难道你不能在一开始就把它变成元组吗?你为什么要这样做:

>>> ".wmv".endswith(tuple(ext))

你不能这样做:

>>> ext = (".3g2", ".3gp", ".asf", ".asx", ".avi", ".flv", \
                        ".m2ts", ".mkv", ".mov", ".mp4", ".mpg", ".mpeg", \
                        ".rm", ".swf", ".vob", ".wmv")