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

时间:2012-10-07 12:36:44

标签: python linux subprocess man

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

我想出了这个:

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

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

如何使用Python获取手册页?

2 个答案:

答案 0 :(得分:7)

您可以使用check_output获取命令的整个输出。此外,使用shell不是必需的,甚至可能使您的应用程序容易受到shell injection attack的影响,并且strongly discouraged

import subprocess

pagename = 'man'
manpage = subprocess.check_output(['man', pagename])

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

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

调用groff时,不要忘记加载正确的宏。

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

答案 1 :(得分:3)

尝试:

p = subprocess.Popen(('man -P cat %s' % manTopic,), shell = True)
stdout, stderr = p.communicate()
if stdout:

代替 - “-P”选项会覆盖“man”命令使用的寻呼机程序。