如何从 cmd 读取 python 模块的文档字符串/帮助?
Posted
技术标签:
【中文标题】如何从 cmd 读取 python 模块的文档字符串/帮助?【英文标题】:How can I read the docstring/help of a python module from cmd? 【发布时间】:2016-10-18 03:54:32 【问题描述】:假设您处于 Windows 命令提示符或类似的命令行环境中。如何从打印到控制台的文档字符串中获取有关 Python 模块的信息?
【问题讨论】:
【参考方案1】:理想情况下,您希望加载模块而不执行它,这可能会产生副作用。这得到了 Python 的 ast
模块的支持,它甚至有一个获取文档字符串的助手。试试这个:
python3 -c"import ast, sys; a = ast.parse(open(sys.argv[1]).read()); print(ast.get_docstring(a))" "$1"
【讨论】:
【参考方案2】:捷径(黑客)
通常(在 2.7 中):
python -c"print 'Hello world'"
(在 3.x 中):
python -c"print('Hello world')"
将输出:Hello world
但是,如果您将 -c
作为参数传递给模块,则会发生其他事情。
例如,导航到[your Python folder]\Tools\Scripts
。如果你的脚本不带参数-c
,一个快捷方式就是运行:
python reindent.py -c
这将导致参数错误:“-c not Recognized”,但它也会将文档字符串返回到控制台。 (一个限制是不能使用|clip
将输出路由到剪贴板。)
一般来说,如果您的脚本 myscript.py
包含一个文档字符串并且不需要参数 -c
:
python myscript.py -c
返回
option -c not recognized
[__docstring__]
作品
一旦您进入reindent.py
的文件夹,您就可以获得一个无错误的文档字符串:
python -c"import reindent; print reindent.__doc__"
要生成可浏览的帮助文本,打印文档字符串并列出包含的类、函数和全局变量,请使用:
python -c"import reindent; help(reindent)"
仅输出到剪贴板(警告:内容将被替换!):
python -c"import reindent; help(reindent)"|clip
更深入
现在您已经弄清楚了哪些类和函数可以访问(见上文),您可以检索类的方法和内部文档字符串:
python -c"from reindent import Reindenter; help(Reindenter)"
【讨论】:
这个答案让我觉得非常危险,因为所有这些选项都会执行完整的脚本——这可能会产生不可预知的后果,包括数据的永久丢失。 (例如,如果脚本忽略了它的选项并且是删除文件的清理脚本。)另外:如果脚本采用-c
选项,-c
技巧将不起作用; -c
的意思是“干净”并删除文件;而且,它不会打印文档字符串,它会打印 argparse
文档,这通常是完全不同的东西。【参考方案3】:
如果您的意思是交互式打印,只需启动不带任何参数的 python 即可获得 REPL(读取-评估-打印循环)。
python
import mypackage
help(mypackage)
dir(mypackage)
一个接一个地执行,以此类推。
如果您的意思是编程,请参阅@noumenal 的答案。
【讨论】:
以上是关于如何从 cmd 读取 python 模块的文档字符串/帮助?的主要内容,如果未能解决你的问题,请参考以下文章