2009-07-30 5 views
1

pydoc의 writedocs() 함수로 패키지의 하위 디렉토리를 만들 수있는 방법이 있습니까? 예를 들어, 내가 문서에 다음과 같은 모듈을 가정 해 봅시다 :pydoc에서 서브 디렉토리를 생성 할 수 있습니까?

foo.py 
dir/bar.py 
dir/__init__.py 

나는 pydoc.writedocs를(), 나는 다음과 같은 파일을 가져 실행할 때 : 내가 좋아하는 것

foo.html 
dir.bar.html 

이 얻을 :

foo.html 
dir/bar.html 

이렇게 할 방법이 있습니까?

답변

1

pydoc.writedocs은 "현재 디렉토리에 파일 쓰기"로 문서화 된 (구현 된) writedoc을 루프합니다. 내가 볼 수있는 유일한 방법은 수정 된 버전을 만들어 모듈에 억지로 넣거나 (즉, 한숨을내어 대칭 맞추기) 모듈의 핵심 요소를 monkeypatching하는 것입니다. 즉, 'open'이 HTML 파일을 작성하기 위해 열리는 곳입니다 열기 위해. 특히, 코드, 당신은 같은 것을 할 수있는 :

import pydoc 

def monkey_open(name, option): 
    if option == 'w' and name.endswith('.html'): 
    name_pieces = name.split('.') 
    name_pieces[-2:] = '.'.join(name_pieces[-2:]) 
    name = '/'.join(name_pieces) 
    return open(name, option) 

pydoc.open = monkey_open 

하지 우아한 또는 매우 강력한 솔루션을하지만, "요구가 있어야합니다"... pydoc이 단지 당신이 원하는 것을 할 수 있도록 설계되지 않았습니다, 그래서 그 물건은 "shoehorned"하게 될 필요가있다.

+0

알아두면 좋을 것. 이 경우 모듈의 동작을 재정의하는 일에 전념하지 않을 것입니다. 그러나 알고있는 것이 좋다! python이 pydoc에 대한 기능 요청을 수행합니까? 어떻게 든 요청을 제출할 수 있을까요? –

+0

물론 파이썬 트래커 인 http://bugs.python.org/에 기능 요청을 제출할 수 있습니다 (ID와 비밀번호를 얻기 위해 사이트에 등록해야하며 읽고 쓰려면 더 많은 것을 얻기 위해 로그온해야합니다 - 트래커에 대한 액세스 만), 트래커에서 해당 요청이 이미 입력되지 않았는지 확인한 후 더 잘 수행됩니다. –

관련 문제