检查文件扩展名
我正在研究某个程序,如果有问题的文件是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'