python调用lib文件_在Python中使用pathlib复制文件

如何在Python 3.6中将__fspath__转换为接受pathlib.PurePath对象

如[https://stackoverflow.com/a/40319071/895245]所述,Python 3.6中的shutdown可以容纳__fspath__个对象。

由于这感觉很神奇,因此我决定研究一下它是如何实现的,以查看是否可以在自己的类中重用此魔术。

改进是PEP 519的结果:[https://www.python.org/dev/peps/pep-0519/]

这概括了很多stdlib功能,结果并没有持续更新文档,包括__fspath__中的大多数,从3.7开始,仅单个功能支持文档。 欢迎来到动态打字的乐趣。

在有文档记录的地方,stlib链接到“类路径对象”的词汇表:[https://docs.python.org/3/glossary.html#term-path-like-object]

表示文件系统路径的对象。 类路径对象可以是表示路径的str或bytes对象,也可以是实现os.PathLike协议的对象。 支持os.PathLike协议的对象可以通过调用os.fspath()函数转换为str或bytes文件系统路径。 可以分别使用os.fsdecode()和os.fsencode()来保证str或bytes结果。 由PEP 519引入。

然后链接到__fspath__的文档:[https://docs.python.org/3/glossary.html#term-path-like-object]

代表文件系统路径的对象的抽象基类,例如 pathlib.PurePath。

3.6版的新功能。

__fspath__

返回对象的文件系统路径表示形式。

该方法应仅返回str或bytes对象,首选项为str。

关键实现的提交似乎是:

3f9183b5aca568867f37c38501fca63911580c66,基本上会更改最低级别的路径操作点为__fspath__

568be63248614a2cdd7666a67ddfd16e817f7db9,将__fspath__添加到pathlib.PurePath

如果要实现自己的类路径类,则可以执行以下操作:

#!/usr/bin/env python3

class MyPath:

def __init__(self, path):

self.path = path

def __fspath__(self):

return self.path

with open(MyPath('f'), 'w'):

pass

已在Ubuntu 3.10,Python 3.6.7中测试。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值