检查文件扩展名

我正在研究某个程序,如果有问题的文件是flac文件或mp3文件,我需要让它做不同的事情。 我可以用这个吗?

如果m == * .mp3
    ....
 elif m == * .flac
    ....

我不确定它是否会起作用。

编辑:当我使用它,它告诉我无效的语法。 那我该怎么办?

假设m是一个string,你可以使用endswith

 if m.endswith('.mp3'): ... elif m.endswith('.flac'): ... 

为了不区分大小写,并消除一个潜在的大的else-if链:

 m.lower().endswith(('.png', '.jpg', '.jpeg')) 

(感谢Wilhem Murdoch提供的参数列表)

os.path提供了许多操作path/文件名的function。 ( docs )

os.path.splitext需要一个path,并从它的末尾分割文件扩展名。

 import os filepaths = ["/folder/soundfile.mp3", "folder1/folder/soundfile.flac"] for fp in filepaths: # Split the extension from the path and normalise it to lowercase. ext = os.path.splitext(fp)[-1].lower() # Now we can simply use == to check for equality, no need for wildcards. if ext == ".mp3": print fp, "is an mp3!" elif ext == ".flac": print fp, "is a flac file!" else: print fp, "is an unknown file format." 

得到:

 /folder/soundfile.mp3是一个MP3!
 folder1 /文件夹/ soundfile.flac是一个flac文件!

看看模块fnmatch。 这将做你正在做的事情。

 import fnmatch import os for file in os.listdir('.'): if fnmatch.fnmatch(file, '*.txt'): print file 

也许:

 from glob import glob ... for files in glob('path/*.mp3'): do something for files in glob('path/*.flac'): do something else 

一个简单的方法可能是:

 import os if os.path.splitext(file)[1] == ".mp3": # do something 

os.path.splitext(file)将返回一个包含两个值的文件(没有扩展名的文件名+只是扩展名)。 第二个索引([1])会给你一个扩展名。 很酷的事情是,这样,你也可以很容易地访问文件名,如果需要的话!

 import os source = ['test_sound.flac','ts.mp3'] for files in source: fileName,fileExtension = os.path.splitext(files) print fileExtension # Print File Extensions print fileName # It print file name 
 if (file.split(".")[1] == "mp3"): print "its mp3" elif (file.split(".")[1] == "flac"): print "its flac" else: print "not compat" 
 #!/usr/bin/python import shutil, os source = ['test_sound.flac','ts.mp3'] for files in source: fileName,fileExtension = os.path.splitext(files) if fileExtension==".flac" : print 'This file is flac file %s' %files elif fileExtension==".mp3": print 'This file is mp3 file %s' %files else: print 'Format is not valid'