Python 路径操作工具 pathlib

参考文档:https://docs.python.org/dev/library/pathlib.html#methods

Python 当中,如果你想控制路径,基本上绕不开 os.path。我希望看完这篇文章以后,熟练使用 Python 的你能立刻开始使用 pathlib 模块,一刻也不要耽误。

pathlib 相对于 os.path 有以下优势:

  • pathlib 导入更加清晰;
  • 采用面向对象编程,能同时存储更多状态,os.path 返回的通常只有一个字符串;
  • pathlib 使用更简单。

获取路径相关信息

pathlib 会把路径相关信息都存在一个 Path 的核心类里面,比如用户名,后缀名,上层目录,文件创建时间,文件大小等等。 这些 os.path 是没有办法一次性都给我们的,因为 os.path 调用的函数几乎都是返回字符串格式,不能像 Path 对象这样保存状态。

1, 获取当前文件路径。这种操作方式可能会包含相对路径信息。

from pathlib import Path

# 列出子目录

# 获取当前路径
p = Path('.')

# 列出子目录
p.iterdir()
# 获取py文件
p.glob('**/*.py')
# 递归获取py文件
p.rglob('**/*.py')
# 在目录树种导航
p / 'init.d' / 'data' / 'source'
# 查询路径属性
p.exists()
p.is_dir()
p.is_file()
p.mkdir()
p.rename()
p.replace()
p.rmdir()
p.touch()
p.unlink()
p.write_text()


# 打开文件
with p.open() as f: 
	f.readline()

# 获取当前文件和文件夹的元信息。
# posix.stat_result(
#	st_mode=16893, 
#	st_ino=60833797, 
#	st_dev=64784, 
#	st_nlink=2, 
#	st_uid=501, 
#	st_gid=501, 
#	st_size=4096, 
#	st_atime=1571387891, 
#	st_mtime=1571387890, 
#	st_ctime=1571387890)
st = p.stat()

# 转换为绝对目录
# 设置 `strict=True`,如果目录不存在则抛出 FileNotFoundError
p = p.resolve( strict=True)

# 获取父目录
parent = p.parent.parent
# 获取所有父目录
parents = p.parents
first_p = parents[0]
second_p = parents[1]

# TODO: 可以封装的技能,目前未实现
parents[-3]

7,

# 获取文件名称
name = p.name

# 获取文件后缀名。
suffix = p.suffix
suffixes = p.suffixes

# 获取不含后缀名的文件名
file_without_suffix = p.stem

# 表示(本地或全局)根的字符串(如果有)
p.root

#将路径表示为fileURI
p.as_uri()

# 返回路径是否为绝对路径。
p.is_absolute()

# 返回此路径是否相对于其他路径。
p.is_relative_to()

# 将此路径与提供的glob样式模式匹配.
p.match('*.py')

路径操作

# 改变文件名为 webben.py,生成新路径,实际文件不发生变化
# 原来的文件名封装在 p 对象中
with_name = p.with_name('webben.py')

# 改变后缀名,生成新路径,实际文件不发生变化
with_suffix = p.with_suffix('.jpg')

# 路径拼接。 pathlib 提供了和 os.path.join() 类似的路径拼接方式:
new_path = p.joinpath('join_path')
new_path = p / 'data/webben' / 'windows'
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值