当前位置: 代码网 > it编程>前端脚本>Python > Python根据文件路径获取不带后缀名的文件名的两种方法

Python根据文件路径获取不带后缀名的文件名的两种方法

2025年10月11日 Python 我要评论
在 python 中根据文件路径获取不带后缀名的文件名,可以使用以下两种主流方法,均支持跨平台路径处理(windows/linux/macos):方法一:使用 os.path 模块(传统方法)impo

在 python 中根据文件路径获取不带后缀名的文件名,可以使用以下两种主流方法,均支持跨平台路径处理(windows/linux/macos):

方法一:使用 os.path 模块(传统方法)

import 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_without_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: 文件路径
    :return: 不带扩展名的文件名
    """
    # 使用.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_extension(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文件路径获取文件名的资料请关注代码网其它相关文章!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com