【发布时间】:2016-10-18 03:54:32
【问题描述】:
假设您处于 Windows 命令提示符或类似的命令行环境中。如何从打印到控制台的文档字符串中获取有关 Python 模块的信息?
【问题讨论】:
标签: python cmd command-line-arguments manual
假设您处于 Windows 命令提示符或类似的命令行环境中。如何从打印到控制台的文档字符串中获取有关 Python 模块的信息?
【问题讨论】:
标签: python cmd command-line-arguments manual
理想情况下,您希望加载模块而不执行它,这可能会产生副作用。这得到了 Python 的 ast 模块的支持,它甚至有一个获取文档字符串的助手。试试这个:
python3 -c"import ast, sys; a = ast.parse(open(sys.argv[1]).read()); print(ast.get_docstring(a))" "$1"
【讨论】:
通常(在 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 文档,这通常是完全不同的东西。
如果您的意思是交互式打印,只需启动不带任何参数的 python 即可获得 REPL(读取-评估-打印循环)。
python
import mypackage
help(mypackage)
dir(mypackage)
一个接一个地执行,以此类推。
如果您的意思是编程,请参阅@noumenal 的答案。
【讨论】: