3

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

我想出了这个:

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

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

如何使用 Python 获取手册页?

4

2 回答 2

9

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

import subprocess

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

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

  • 调用man -w <name>以获取联机帮助页的位置,
  • 可能解压手册页,
  • groff使用选项来-T选择所需的输出类型。

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

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

于 2012-10-07T12:46:03.240 回答
3

尝试:

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

相反——“-P”选项覆盖了“man”命令使用的寻呼程序。

于 2012-10-07T12:44:11.953 回答