2012-10-07 6 views
2

메신저 리눅스를 실행하고 일부 설명서 페이지를 내 응용 프로그램으로 가져 오려고합니다.파이썬에서 맨 페이지의 내용을 얻는 방법은 무엇입니까?

어떻게 내가 파이썬 매뉴얼 페이지를 얻을 수 있습니다

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

하지만 더 좋은 사람이 표시되지 않은 경우에만 첫 페이지 및 블록 내 applicationon :

내가이 함께했다?

+1

서식은 어떻게됩니까? 그것을 지켜야합니까, 아니면 벗겨 내야합니까? –

답변

3

봅니다 :

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

대신 - 은 "-P"옵션은 "사람"명령에 의해 사용 된 페이저 프로그램을 우선합니다.

7

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>을 사용합니다.

  • +0

    +1 형식을 다루고'groff -T ...'를 언급하고'man -w '를 사용하여'man'이 룩업을 수행하고 경로를 반환하도록하지만, 직접 처리하십시오. –

    +0

    아, 물론'shell = True'의 보안 함의를 언급하기 위해. 내 +3 버튼은 어디에 있습니까? –

    +0

    파이썬 2.6을 사용하고 있습니다. subprocess.check_output() :] – BPS

    관련 문제