Python 如何获取不带扩展名的文件名?

os.path.splitext 分离扩展名取 [0],配合 os.path.basename 先去目录;pathlib 的 Path.stem 最简洁。本文给出两种方案与多重扩展名(.tar.gz)的处理。

最佳实践
Python 如何获取不带扩展名的文件名?封面

最简洁:pathlib.Path('/a/b/report.txt').stem'report';传统写法:os.path.splitext(os.path.basename(path))[0]

pathlib(推荐)

from pathlib import Path
p = Path('/home/user/archive.tar.gz')
p.stem      # 'archive.tar'(只去掉最后一个后缀)
p.name      # 'archive.tar.gz'(完整文件名)
p.suffix    # '.gz'
p.suffixes  # ['.tar', '.gz']

os.path 写法

import os
path = '/home/user/report.txt'
os.path.splitext(os.path.basename(path))[0]   # 'report'

两步:basename 去目录,splitext 去扩展名。

多重扩展名的坑

archive.tar.gz 的 stem 是 archive.tar——只去最后一个。要全去掉:

name = p.name
for _ in p.suffixes:
    name = os.path.splitext(name)[0]   # 或直接 name.split('.')[0]

常见问题(FAQ)

Q:没有扩展名的文件呢? stem 返回完整文件名,splitext 返回原样——安全。

Q:隐藏文件如 .gitignore? pathlib 视其无后缀(stem 为 '.gitignore'),符合直觉。

获取专属方案

联系我们

加入社区

微信扫码
加入官方交流群

立即体验

在线开通,按量计费,真正的云服务!

立即开始

选择观测云版本

代码托管平台