如何检查文件的扩展名?
我正在做一个程序,需要根据文件的扩展名来执行不同的操作。我可以直接这样做吗?
if m == *.mp3
...
elif m == *.flac
...
14 个回答
77
从Python 3.4开始,使用pathlib
这个库。
from pathlib import Path
Path('my_file.mp3').suffix == '.mp3'
如果你在处理包含点(.)的文件夹时,可以使用
Path('your_folder.mp3').is_file() and Path('your_folder.mp3').suffix == '.mp3'
进行额外的检查,以确保一个以.mp3
结尾的文件夹不会被误认为是一个mp3文件。
79
os.path
是一个提供了很多处理路径和文件名功能的工具。你可以在这里找到相关的文档:(docs)
os.path.splitext
这个函数可以把一个路径分开,提取出文件的扩展名,也就是文件名最后的那部分。
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 is an mp3! folder1/folder/soundfile.flac is a flac file!
618
假设 m
是一个字符串,你可以使用 endswith
方法:
if m.endswith('.mp3'):
...
elif m.endswith('.flac'):
...
如果你想不区分大小写,并且想避免写很多的 else-if 语句,可以这样做:
m.lower().endswith(('.png', '.jpg', '.jpeg'))