第六章:文件系统-pathlib:文件系统路径作为对象-建立路径

6.2.2 建立路径
要实例化一个新路径,可以提供一个字符串作为第一个参数。路径对象的字符串表示就是这个名值。要创建一个新路径来指示相对于已有路径的一个值,可以使用/操作符扩展这个路径。这个操作符的参数可以是一个字符串,也可以是另一个路径对象。

import pathlib

usr = pathlib.PurePosixPath('/usr')
print(usr)

usr_local = usr / 'local'
print(usr_local)

usr_share = usr / pathlib.PurePosixPath('share')
print(usr_share)

root = usr / '..'
print(root)

etc = root / '/etc/'
print(etc)

如示例输出中root的值所示,这个操作符会组合所提供的路径值,但是在包含父目录引用“…”时没有对结果进行规范化。不过,如果一个路径段以路径分隔符开头,那么与os.path.join()中一样,会把它解释为一个新的“根”引用。会从路径值中间删除额外的路径分隔符,如这里的etc实例所示。

运行结果:
在这里插入图片描述
具体路径类包括一个用于规范化路径resolve()方法,它会在文件系统中查找目录和符号链接,并生成一个名指示的绝对路径。

import pathlib

usr_local = pathlib.Path('/usr/local')
share = usr_local / '..' / 'share'
print(share.resolve())

这里相对路径被转换为绝对路径/usr/share。如果输入路径包含符号链接,那么它们也会展开,以使规范化的路径直接指示目标。
运行结果:

G:\usr\share

要想在路径段提前不可知时建立路径,可以使用joinpath(),并传入各个路径段作为一个单独的参数。

import pathlib

root = pathlib.PurePosixPath('/')
subdirs = ['usr','local']
usr_local = root.joinpath(*subdirs)
print(usr_local)

与/操作符一样,调用joinpath()会创建一个新实例。
运行结果:

/usr/local

给定一个现有的路径对象,可以很容易地建立一个与它稍有差别的新对象,如指示同一个目录中的另一个文件。可以使用with_name()创建一个新路径,将一个路径中的名部分替换为另一个不同的文件名。使用with_suffix()也可以创建一个新路径,将文件名的扩展名替换为一个不同的值。

import pathlib

ind = pathlib.PurePosixPath('source/pathlib/index.rst')
print(ind)

py = ind.with_name('pathlib_from_existing.py')
print(py)

pyc = py.with_suffix('.pyc')
print(pyc)

这两个方法都返回新对象,原来的对象仍保持不变。
运行结果:

source/pathlib/index.rst
source/pathlib/pathlib_from_existing.py
source/pathlib/pathlib_from_existing.pyc

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值