如何在Python中获取手册页内容?

BPS*_*BPS 2 python linux subprocess manpage

即时运行Linux,我想将一些手册页导入我的应用程序.

我想出了这个:

p = subprocess.Popen(('man %s' % manTopic,), shell = True, stdout = subprocess.PIPE)
stdout, stderr = p.communicate()
if stdout:
Run Code Online (Sandbox Code Playgroud)

但它不好,男人只显示第一页并阻止我的应用程序

如何使用Python获取手册页?

Rol*_*ith 7

您可以使用获取命令的整个输出check_output.此外,使用shell不是必需的,甚至可能使您的应用程序容易受到shell注入攻击,并且强烈建议不要使用.

import subprocess

pagename = 'man'
manpage = subprocess.check_output(['man', pagename])
Run Code Online (Sandbox Code Playgroud)

请注意,使用man将为您提供为终端格式化的输出.如果你想让它的格式不同,你就必须这样做

  • 打电话man -w <name>获取联机帮助页的位置,
  • 可能解压缩手册页,
  • 将其提供给groff使用-T选项以选择所需的输出类型.

打电话时groff,不要忘记加载正确的宏.

在FreeBSD上,我倾向于使用groff -Tlatin1 -mandoc <file>文本输出.