python文件和路径操作神器:pathlib

文章目录

Pathlib

pathlib中封装了PurePathPath类,前者用于处理路径风格的字符串;后者是前者的子类,可直接处理路径。

PurePath最甜的功能是重载了运算符,从而可以实现类似下面这种

>>> from pathlib import Path, PurePath
>>> pp = PurePath("E:/")
>>> pp
PureWindowsPath('E:/')
>>> pp/"test"
PureWindowsPath('E:/test')

PurePath

对于PurePath对象来说,可调用下面的成员或成员函数

部分drive[盘符], root[根路径], anchor[盘符+根路径],
parent[父路径], parents[全部父路径], name[文件名]
suffix[文件后缀], suffixes[所有文件后缀],stem[主文件名]
拼拆parts[拆分], joinpath[拼接]
替换with_name[文件名], with_suffix[后缀], with_stem[主文件名]
风格转换as_posix(), as_uri()
判断is_absolute, is_relative_to, is_reserved

其中,主文件名即去除后缀之后的文件名。

PurePath类中还有一些稍微复杂的函数,

>>> pp = PurePath("E:\Code\test.py")
# 用于匹配文件后缀
>>> pp.match("*.py")
True
# 去除基准路径
>>> pp.relative_to("E:\\")
PureWindowsPath('Code\test.py')
# 更改文件名
>>> pp.with_name('test1.py')
PureWindowsPath('E:/test1.py')
# 更改后缀名
>>> pp.with_suffix(".md")
PureWindowsPath('E:/Code\test.md')
# 更改主文件名
>>> pp.with_stem("help.md")
PureWindowsPath('E:/help.md.py')

Path

Path是PurePath的子类,在PurePath的基础上添加了一些判定函数,

判定函数is_diris_fileis_fifo
is_block_deviceis_char_device
is_mountis_symlinkis_socket

Path对象还可以打开并写入数据,但令人绝望的是并没有close函数,所以并不建议使用。或者说,这个Path.open不像是给程序员使用的,因为Path中提供了更加便捷的读写方式read_bytes,read_text以及write_bytes、write_text。

例如

>>> p = Path(r'E:\Documents\00\0324\Test.txt')
>>> p.write_text("hello world")
11
>>> p.read_text()
'hello world'
>>>

此外,可用于直接操作文件和文件夹,提供了非常强大的文件处理功能。Pathos中提供的函数在功能上对应如下

os.pathlib功能
chmod()chmod()更改文件属性
mkdir()
os.makedirs()
mkdir()新建文件夹
rename()rename()重命名
replace()replace()重命名,若新名字已存在,则覆盖
rmdir()rmdir()删除文件夹
remove()
unlink()
unlink()删除文件
getcwd()Path.cwd()当前路径
path.abspath()resolve()绝对路径
path.expanduser()expanduser()
home()
系统/用户路径
listdir()iterdir()列出所有子路径
path.exists()exists()判定路径是否存在
path.isdir()is_dir()判定路径是否为目录
path.isfile()is_file()判定路径是否为文件
path.islink()is_symlink()判定路径是否为链接
path.isabs()is_absolute()判定路径是否为绝对路径
link()hardlink_to()连接文件
symlink()symlink_to()连接文件
readlink()readlink()读取连接
path.join()joinpath()连接路径
path.samefile()samefile()判断路径是否相同
path.basename()name
path.dirname()parent
path.splitext()suffix
  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

微小冷

请我喝杯咖啡

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值