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, от самого низкого приоритета (наименьшего связывания) до самого высокого приоритета (большинство
1 ответ
Чтобы понять это поведение, вы должны проникнуть внутрь 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)
вы получите желаемый результат.