python根据图片路径获取文件后缀名
在Python中可以通过以下两种方式根据文件路径获取后缀名:
方法一:使用os.path模块(标准库)
import osdef get_file_extension(file_path):# 分割路径获取文件名file_name = os.path.basename(file_path)# 分割文件名和扩展名_, ext = os.path.splitext(file_name)return ext.lower().lstrip('.') # 返回小写且不带点的后缀# 使用示例
print(get_file_extension("/path/to/image.jpg")) # 输出: jpg
print(get_file_extension("folder/photo.PNG")) # 输出: png
print(get_file_extension("archive.tar.gz")) # 输出: gz(只取最后一个扩展名)
print(get_file_extension(".hiddenfile")) # 输出: hiddenfile(特殊情况处理)
方法二:使用pathlib库(推荐,Python 3.4+)
from pathlib import Pathdef get_file_extension(file_path):path = Path(file_path)# 获取所有扩展名(返回列表,如 ['tar', 'gz'])# extensions = path.suffixes# 获取最后一个扩展名(推荐方式)return path.suffix.lower().lstrip('.') if path.suffix else ''# 使用示例
print(get_file_extension("/path/to/image.jpg")) # 输出: jpg
print(get_file_extension("folder/photo.PNG")) # 输出: png
print(get_file_extension("archive.tar.gz")) # 输出: gz
print(get_file_extension(".hiddenfile")) # 输出: ''(视为无扩展名)
特性对比:
方法 | 多扩展名支持 | 隐藏文件处理 | 返回值类型 | 推荐场景 |
---|---|---|---|---|
os.path | ❌ 仅取最后 | ✅ 返回全名 | 字符串 | 简单快速场景 |
pathlib | ✅ 支持列表 | ✅ 视为无扩展 | 字符串 | 现代Python项目 |
高级用法(获取所有扩展名):
# 使用pathlib获取完整扩展名链
def get_all_extensions(file_path):path = Path(file_path)return [ext.lstrip('.').lower() for ext in path.suffixes]print(get_all_extensions("archive.tar.gz")) # 输出: ['tar', 'gz']
注意事项:
- 大小写处理:建议统一转为小写(
.JPG
→jpg
) - 特殊文件:隐藏文件(如
.bashrc
)会被视为无扩展名 - 无扩展名文件:返回空字符串而不是错误
- URL路径:如果处理的是网络路径,建议先用
urllib.parse
解析
根据实际需求选择方法,现代Python项目推荐使用pathlib
方案,它具有更好的可读性和面向对象特性。