python pathlib 获取文件名
【摘要】 在 Python 中,使用 pathlib 模块可以非常方便地获取文件名(包括不带扩展名的文件名、扩展名等)。以下是常见操作: 1. 获取文件名(带扩展名)使用 Path.name 属性:from pathlib import Pathfile_path = Path("/path/to/your/file/example.txt")print(file_path.name) # 输出: ...
在 Python 中,使用 pathlib
模块可以非常方便地获取文件名(包括不带扩展名的文件名、扩展名等)。以下是常见操作:
1. 获取文件名(带扩展名)
使用 Path.name
属性:
from pathlib import Path
file_path = Path("/path/to/your/file/example.txt")
print(file_path.name) # 输出: example.txt
2. 获取文件名(不带扩展名)
使用 Path.stem
属性:
from pathlib import Path
file_path = Path("/path/to/your/file/example.txt")
print(file_path.stem) # 输出: example
3. 获取文件扩展名
使用 Path.suffix
(单个扩展名)或 Path.suffixes
(多个扩展名列表):
from pathlib import Path
file_path = Path("/path/to/your/file/example.tar.gz")
print(file_path.suffix) # 输出: .gz(最后一个扩展名)
print(file_path.suffixes) # 输出: ['.tar', '.gz'](所有扩展名列表)
4. 获取父目录路径
使用 Path.parent
:
from pathlib import Path
file_path = Path("/path/to/your/file/example.txt")
print(file_path.parent) # 输出: /path/to/your/file
5. 组合路径并获取文件名
pathlib
可以直接拼接路径,然后提取文件名:
from pathlib import Path
dir_path = Path("/path/to/your/file")
file_path = dir_path / "subfolder" / "example.txt"
print(file_path.name) # 输出: example.txt
6. 判断是否是文件
使用 Path.is_file()
:
from pathlib import Path
file_path = Path("/path/to/your/file/example.txt")
if file_path.is_file():
print(f"{file_path.name} 是一个文件")
完整示例
from pathlib import Path
# 定义文件路径
file_path = Path("/home/user/docs/report.pdf")
# 获取文件名信息
print("完整文件名:", file_path.name) # report.pdf
print("不带扩展名:", file_path.stem) # report
print("扩展名:", file_path.suffix) # .pdf
print("父目录:", file_path.parent) # /home/user/docs
# 检查路径类型
if file_path.is_file():
print(f"{file_path.name} 是文件")
为什么推荐 pathlib
?
- 跨平台:自动处理不同操作系统(Windows/Linux/macOS)的路径分隔符(
/
或\
)。 - 面向对象:比
os.path
更直观,支持链式操作。 - 功能丰富:集成路径拼接、文件检查、读写等操作。
如果需要兼容旧版 Python(<3.4),可以用 os.path
,但新项目建议优先使用 pathlib
。
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)