即時通訊運行的Linux,我想導入一些手冊頁到我的應用程序。如何獲取Python中的手冊頁內容?
我想出了這個:
p = subprocess.Popen(('man %s' % manTopic,), shell = True, stdout = subprocess.PIPE)
stdout, stderr = p.communicate()
if stdout:
但它沒有好,人是隻顯示第一頁和塊我applicationon
我怎樣才能獲得男人頁與Python?
即時通訊運行的Linux,我想導入一些手冊頁到我的應用程序。如何獲取Python中的手冊頁內容?
我想出了這個:
p = subprocess.Popen(('man %s' % manTopic,), shell = True, stdout = subprocess.PIPE)
stdout, stderr = p.communicate()
if stdout:
但它沒有好,人是隻顯示第一頁和塊我applicationon
我怎樣才能獲得男人頁與Python?
嘗試:
p = subprocess.Popen(('man -P cat %s' % manTopic,), shell = True)
stdout, stderr = p.communicate()
if stdout:
代替 - 了 「-P」 選項覆蓋由 「人」 命令中使用的尋呼機程序。
您可以通過check_output
獲取命令的整個輸出。此外,使用外殼並不是必需的,甚至可能使您的應用程序容易受到shell injection attack,並且是strongly discouraged。
import subprocess
pagename = 'man'
manpage = subprocess.check_output(['man', pagename])
請注意,使用man
將爲您提供格式化爲終端的輸出。如果你想擁有它的格式不同,你必須
man -w <name>
拿到手冊頁的位置,-T
選項飼料它groff
選擇你想要的輸出類型。當調用groff
時,不要忘記加載正確的宏。
在FreeBSD上,我傾向於使用groff -Tlatin1 -mandoc <file>
來獲取文本輸出。
+1用於處理格式化和提及'groff -T ...',並使用'man -w'讓'man'進行查找並返回路徑,然後自己處理它。 –
呵呵,當然還有提及'shell = True'的安全含義。我的+3按鈕在哪裏? –
我使用Python 2.6沒有subprocess.check_output():] – BPS
格式化怎麼樣?你需要保留它還是需要剝離? –