== edit == 업데이트되었습니다
따라서 문제는 CLI 기반 도움말의 경우 DOC 문자열 너비가 원본 문서의 Newlines에 의해서만 제한된다는 것입니다. 즉, '도움말'을 실행할 때 (미래) ', 그것은 단지 DOC 문자열을 인쇄하고 페이지를 페이지로 인쇄합니다. 공상은없고, 즉시 형식이 없습니다. 그렇기 때문에 문서를 HTML로 렌더링하는 경우 브라우저 너비를 수정할 수 있으며 다르게 랩됩니다.
이 동작을 수정하는 유일한 방법은 실제로 문서 자체를 수정하는 것입니다.
다음은 Monkey-Patch Doc 문자열을 만드는 방법에 대한 빠른 예입니다. 본질적으로 문서에서, 신약은 라인 끝까지 하드 코딩되어 있습니다.
a = """
one
two
three
"""
인코딩
'\none\ntwo\n\nthree\n'
'랩'라인을 자동으로 원한다면 캡처 된 캐릭터로 n [^ n] (Newline + 캐릭터)를 교체하면됩니다.
re.sub('\n([^\n])', ' \g<1>', a)
그때가됩니다
' one two\n three\n'
이것은 일을하는 매우 해킹적인 방법이지만, 내가 랩을 할 수 있도록 물건을 재 포장하는 것을 생각할 수있는 유일한 방법입니다.
더 나은 예는 다음과 같습니다.
#!/usr/bin/python
import pydoc
import re
t = re.sub('\n([^\n])', ' \g<1>', pydoc.__doc__)
pydoc.__doc__ = t
help(pydoc)
== edit ==
이것은 당신의 요구에 맞지 않을 수도 있지만, 나는 조금 다르게 해결하는 비슷한 그립을 가지고있었습니다. 나는 백그라운드의 브라우저에 stdlib 문서를로드하는 '도움말'래퍼를 썼습니다. 그것은 당신을 도울 수 있습니다. 좋은 점은 PYDOC 물건의 HTML 출력이 단락에서 가변 너비를 허용한다는 것입니다.
첨부 된 스크립트를 가져 와서 site.py에서 가져 오면 stdlib 물건에서 CLI에서 help ()를 실행하면 해당 웹 페이지를 자동으로 열 수 있습니다. 이것은 자신의 현지 물건을 위해 아무것도하지 않습니다 (나는 생각하지 않습니다. 오랜 시간이 지났습니다). 그러나 그렇게하도록 수정 될 수 있습니다.
당신이 하드 코어 클리 가이라면 사과드립니다. 그러나 물건의 출력과 관련하여 비슷한 그립에 직면했을 때 이것이 내가 처음 시도한 것입니다.
#!/usr/bin/python
import inspect
import os
import sys
import webbrowser
from pydoc import Helper
__all__ = ['MyHelper', 'old_help', 'help']
class MyHelper(Helper):
def __init__(self):
Helper.__init__(self)
def getdocloc(self, object):
global old_help
"""Return the location of module docs or None"""
try:
file = inspect.getabsfile(object)
except TypeError:
file = '(built-in)'
docloc = os.environ.get("PYTHONDOCS", "http://docs.python.org/library")
basedir = os.path.join(sys.exec_prefix, "lib", "python"+sys.version[0:3])
BUILTINS_LIST = ( 'errno', 'exceptions', 'gc', 'imp', 'marshal', 'posix', 'signal', 'sys', 'thread', 'zipimport')
if (isinstance(object, type(os)) and (object.__name__ in BUILTINS_LIST or file.startswith(basedir)) and object.__name__ not in ('xml.etree', 'test.pydoc_mod')):
if docloc.startswith("http://"):
docloc = "%s/%s" % (docloc.rstrip("/"), object.__name__)
else:
docloc = os.path.join(docloc, object.__name__ + ".html")
else:
docloc = None
return docloc
def __repr__(self):
global old_help
if inspect.stack()[1][3] == '?':
return self()
return ''
else:
return '<HHhelp instance>'
def help(self, *args):
print args
global old_help
if isinstance(args[0], object):
docloc = self.getdocloc(args[0])
print '********',docloc,type(docloc)
if isinstance(docloc, str):
if docloc.find('http://') == 0:
webbrowser.open(docloc)
else:
old_help(args)
global old_help, help
old_help = help
help = MyHelper()
예쁜 파이썬 문서를 얻는 데 사용하는 두 번째 솔루션은 스핑크스의 사용입니다. 스핑크스-아파디도 파이썬 모듈에 대한 API 문서를 자동으로 생성합니다. 표준 Python Doc 출력 재료는 실제로 제한적입니다 (경험 한대로).
그러나, 그 말로 - 문서의 너비는 어떻게 든 구성 가능하지만 원숭이 패치가 필요할 것이라고 확신합니다 ... 조금 찌르고 내가 찾을 수있는 것을 볼 것입니다.