即时运行linux,我想将一些手册页导入我的应用程序。
我想出了这个:p = subprocess.Popen(('man %s' % manTopic,), shell = True, stdout = subprocess.PIPE)
stdout, stderr = p.communicate()
if stdout:
但它不好,男人只显示第一页并阻止我的应用
如何使用Python获取手册页?
答案 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”命令使用的寻呼机程序。