首页 > 解决方案 > pydoc.doc 无法检索“os.path.sep”

问题描述

os.path.sep我在交互模式下检查了帮助实用程序,然后通过:

In [59]: help(os.path.sep)
Related help topics: lambda, or, and, not, in, is, BOOLEAN, COMPARISON,BITWISE, SHIFTING, BINARY, FORMATTING, POWER, UNARY, ATTRIBUTES,SUBSCRIPTS, SLICINGS, CALLS, TUPLES, LISTS, DICTIONARIES

运算符优先级


下表总结了 Python 中的运算符优先级,从最低优先级(最少绑定)到最高优先级(最多绑定)。同一框中的运算符具有相同的优先级。除非明确给出语法,否则运算符是二元的。同一框中的运算符从左到右分组(取幂除外,它从右到左分组)。

但是,当我尝试使用 pydoc 检索它时

In [61]: with open("osPathSep_help.md", "w") as fout:
    ...:     pydoc.doc(os.path.sep, output=fout)
    ...:     
No Python documentation found for '/'.
Use help() to get the interactive help utility.
Use help(str) for help on the str class.

In [62]: os.stat("osPathSep_help.md").st_size
Out[62]: 0

如何获得与报价相同的内容?

下表总结了 Python 中的运算符优先级,从最低优先级(最少绑定)到最高优先级(最

标签: pythonpydoc

解决方案


要了解这种行为,您必须深入了解os.path库源代码。如果你进入代码内部,你会发现所有这些变量

curdir = '.'
pardir = '..'
extsep = '.'
sep = '\\'
pathsep = ';'
altsep = '/'
defpath = '.;C:\\bin'
devnull = 'nul'

现在你要做的是os.path.sep作为一个函数访问,但你可以看到它不是一个函数,而是一个赋值为'\'的变量

所以 os.path.sep 总是如此\,这就是为什么当你在做的时候help(os.path.sep)你得到的结果是

运算符优先级

下表总结了 Python 中的运算符优先级,从最低优先级(最少绑定)到最高优先级(最多绑定)。同一框中的运算符具有相同的优先级。除非明确给出语法,否则运算符是二元的。同一框中的运算符从左到右分组(取幂除外,它从右到左分组)。

这将与您将获得的结果相同

help('\\')

现在你的下一个问题是它是如何工作的help

因此,如果您检查帮助的源代码,则会提到

"""
Define the built-in 'help'.
This is a wrapper around pydoc.help (with a twist).
"""

所以帮助在内部使用pydoc.help

所以如果你正在使用

pydoc.help('\\')或者pydoc.help(os.path.sep)你会得到你想要的输出。


推荐阅读