== РЕДАКТИРОВАТЬ == Обновлено
Таким образом, проблема, с которой вы столкнетесь, заключается в том, что для справки на основе CLI ширина строки DOC действительно ограничена только новичками в исходной документации. То есть, когда вы бегаете на помощь (будущее), это просто печатает строку документа и странит ее. Ничего особенного, форматирование не было сделано на лету. Вот почему, если вы переведете DOC в HTML, вы можете изменить ширину браузера, и он будет обернуться по -разному.
Единственный способ, которым я обнаружил, чтобы изменить это поведение, - это если вы фактически измените саму DocString.
Вот быстрый пример того, как справиться с обезжиренными ручками. По сути, в докторе
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)
== РЕДАКТИРОВАТЬ ==
Это может или не может соответствовать вашим потребностям, но у меня была похожая конфессия, которую я решил немного по -другому. Я написал обертку «помощь», которая загружает документы Stdlib в браузере на заднем плане. Это может или не может помочь вам - одна хорошая вещь заключается в том, что вывод HTML Pydoc материал позволяет увеличивать ширину переменной в параграфах.
Вы можете взять прикрепленный сценарий, импортировать его с сайта.py, а затем, когда вы запускаете help () из CLI на любых вещах Stdlib, он автоматически откроет соответствующую веб -страницу. Это ничего не делает для ваших собственных местных вещей (я не думаю, это было некоторое время), но это может быть изменено, чтобы сделать это.
Если ты хардкорный парень, извиняюсь. Но когда я столкнулся с аналогичным захватом в отношении вывода вещей, это то, что я изначально пробовал.
#!/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()
Второе решение, которое я использую для получения симпатичных документов Python, - это использование Sphinx SPHINX-APIDOC автоматически генерировать документы API для модулей Python. Стандартный вывод Python Doc действительно ограничен (как вы испытываете).
Тем не менее, с учетом сказанного - держу пари, что ширина для документов каким -то образом настраивается, но потребует обезьянного исправления ... Я немного наклеиваю и посмотрю, что я могу найти.