gpt4 book ai didi

python - 如何从 Path 切换到 os.path,反之亦然?

转载 作者:行者123 更新时间:2023-12-02 19:03:55 26 4
gpt4 key购买 nike

每当我想处理文件或目录时,今天的方法是使用 pathlibpathlib 很棒、方便、易于使用且独立于操作系统。

但是,一些库仍然希望我使用 os.path。如何将我的 Path 转换为老式版本?

在下面的示例中,我应该如何处理我的 p

from pathlib import Path

p = Path.cwd()
some_old_function(p) # <---- error

最佳答案

一些库仍然希望我使用 os.path 这句话似乎让您感到困惑。 os.path 是一个简单地将路径视为 strings 的模块 - 而 pathlib 则将它们视为专门的OOP 方法中的对象。

为了在两种表示之间创建一个简单且定义明确的转换,Python 3.6 中引入了 PEP 519。它引入了一个新的抽象类 - PathLike - 和一个新的 os 函数 - fspath。任何希望实现路径对象(包括 pathlib)的 API/库都应继承 PathLike 并实现 __fspath__ 方法(将调用通过 os.fspath)。

The main rationale 因为使用 str(path) 容易出错 - 许多对象都有字符串表示(str(None) 给出 "None"),但不应将它们全部视为路径。

专门用于 pathlib(在撰写本文时),the implementation of __fspath__ is basically just a wrapper over str(),但您仍然应该更喜欢使用它,以防它将来发生变化。

请注意,在将参数传递给大多数内置函数时,您不需要实际调用 os.fspath。大多数 os.path 函数已更改为接受 PathLike 而不是字符串,并且已经在其上使用了 os.fspath(可以在 the docs 中看到在 3.6 版中更改:接受类似路径的对象。 在大多数函数下)。因此,您可以简单地将 Path 对象按原样传递给它们中的大多数。

关于python - 如何从 Path 切换到 os.path,反之亦然?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65313454/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com