python中用类型提示注释路径的正确方法是什么?

Zac*_*030 9 python typing type-hinting pathlib

在从文件读取的python3中注释这个简单的实用程序函数的正确方法是什么?它应该接受pathlib.Path对象以及任何其他传递路径的常见方式。

def read_json(path: <TYPE HINT>):
    with open(path, 'rb') as f:
        data = json.load(f)
    return data
Run Code Online (Sandbox Code Playgroud)

在我看来,这个话题似乎在不断变化,我找不到收集这些信息的好地方。我对如何在 python 3.6、3.7 和 3.8 中处理这个感兴趣。

Chr*_*uer 17

我假设典型的路径对象是Paths 或strs,因此您可以使用Union

import pathlib

typing.Union[str, pathlib.Path]
Run Code Online (Sandbox Code Playgroud)

  • 是否有任何地方显示带有类型注释的标准函数?我找不到,但是“复制‘open’的注释将是一个很好的答案。 (3认同)
  • @YotamWConstantini 是的,但是 Pathlike 在 2019 年并不存在 (3认同)
  • ```open``` 使用 ```file: _OpenFile``` 作为注释,即联合 ```Union[AnyPath, int]```。 (2认同)
  • 我使用这个 `PathLike = TypeVar("PathLike", str, pathlib.Path, None)`。 (2认同)
  • “os”模块没有重新发明轮子(@maf88),而是具有“os.PathLike”,它是“pathlib.Path”的超类,可以直接使用。我认为答案应该编辑为“Union[str, os.PathLike]” (2认同)