如何从 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 模块的文档字符串/帮助?的主要内容,如果未能解决你的问题,请参考以下文章

如何采用Python读取一个图像

Python 操作 Word

Python:执行cmd命令时读取输出

在iPhone中如何读取文件?

使用 cmd.exe 或 PowerShell 或 Python 从 Windows 命名管道中读取

用python操作PDF文件