Python根据文件路径获取不带后缀名的文件名的两种方法
目录
- 方法一:使用 os.path 模块(传统方法)
- 方法二:使用 pathlibhttp://www.devze.com 模块(python 3.4+ 推荐)
- 关键特性说明:
- 扩展功能:
在 Python 中根据文件路径获取不带后缀名的文件名,可以使用以下两种主流方法,均支持跨平台路径处理(Windows/linux/MACOS):
方法一:使用 os.path 模块(传统方法)
imppythonort os def get_filename_without_extension(file_path): """ 获取不带扩展名的文件名 :param file_path: 文件路径(支持绝对路径/相对路径) :return: 不带扩展名的文件名 """ # 获取完整的文件名(包含扩展名) full_filename = os.path.basename(file_path) # 分离文件名和扩展名 filename, extension = os.path.splitext(full_filename) return filename # 使用示例 if __name__ == "__main__": path1 = "/home/user/images/landscape.jpg" path2 = "C:\\Documents\\report.docx" path3 = "./data/.gitignore" # 测试隐藏文件 print(get_filename_without_extension(path1)) # 输出: landscape print(get_filename_withoupythont_extension(path2)) # 输出: report print(get_filename_without_extension(path3)) # 输出: .gitignore
方法二:使用 pathlib 模块(Python 3.4+ 推荐)
from pathlib import Path def get_filename_without_extension(file_path): """ 获取不带扩展名的文件名 :param file_path: 文件路径 :returphpn: 不带扩展名的文件名 """ # 使用.stem属性直接获取无扩展名文件名 return Path(file_path).stem # 使用示例 if __name__ == "__main__": path1 = "/var/log/system.log" path2 = "relative/path/file.tar.gz" path3 = "no_extension_file" print(get_filename_without_extension(path1)) # 输出: system print(get_filename_without_extension(path2)) # 输出: file.tar print(get_filename_without_extenspythonion(path3)) # 输出: no_extension_file
关键特性说明:
跨平台兼容性:
- 自动处理不同操作系统的路径分隔符(
/
和\
) - 正确处理网络路径(
\\server\share\file
)
特殊文件处理:
- 隐藏文件(如
.gitignore
)保留前导点 - 无扩展名文件返回完整文件名
- 多扩展名文件(如
.tar.gz
)只移除最后一个扩展名
路径解析细节:
os.path.basename()
提取路径中的文件名部分os.path.splitext()
严格分离最后一个点后的扩展名pathlib.Path.stem
直接获取无扩展名部分
边界情况处理:
- 空路径返回空字符串
- 目录路径返回目录名(不含扩展名)
- 纯扩展名文件(如
.htAccess
)返回空字符串
扩展功能:
如果需要获取文件名中的所有部分(如处理复合扩展名),可以使用:
# 获取不带任何扩展名的完整基础名 base_name = Path(file_path).name.split('.')[0] # 获取所有扩展名(适用于多扩展名场景) suffixes = Path(file_path).suffixes # 返回列表 ['.tar', '.gz']
根据实际需求选择方法:
- 兼容旧版 Python使用
os.path
方案 - 新项目推荐使用更直观的
pathlib
方案 - 需要精确控制扩展名处理逻辑时可结合字符串操作
以上就是Python根据文件路径获取不带后缀名的文件名的两种方法的详细内容,更多关于Python文件路径获取文件名的资料请关注编程客栈(www.devze.com)其它相关文章!
精彩评论