【问题标题】:How can I read the docstring/help of a python module from cmd?如何从 cmd 读取 python 模块的文档字符串/帮助?
【发布时间】:2016-10-18 03:54:32
【问题描述】:

假设您处于 Windows 命令提示符或类似的命令行环境中。如何从打印到控制台的文档字符串中获取有关 Python 模块的信息?

【问题讨论】:

    标签: python cmd command-line-arguments manual


    【解决方案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 的答案。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-12-20
        • 2019-08-10
        • 1970-01-01
        • 2023-02-24
        • 2021-11-06
        • 1970-01-01
        • 2023-01-04
        相关资源
        最近更新 更多