@StonVodopada

Как вывод команды help в терминал передать в переменную?

Надо написать программу, которая при помощи python-pptx делает презентацию и в слайды запихивает в название слайда - название метода библиотеки, полученное при помощи dir(библиотека), а в текст - документацию метода, полученное при помощи help(библиотека), но если по-тупому пытаться так все вставить (код ниже) - то мне просто в терминал выдает всю документацию и ничего не пишет (не создает даже ) в презентацию
from pptx import Presentation
from pptx.util import Inches, Pt
from pptx.enum.text import PP_ALIGN
import random

# Создаем новый объект презентации
prs = Presentation()

# Добавляем 5 новых слайдов в презентацию
for i in range(5):
    prs.slides.add_slide(prs.slide_layouts[6])

# Получаем список методов библиотеки random
methods = dir(random)

# Добавляем заголовки и текст слайдов
for i, method in enumerate(methods):
    slide = prs.slides[i]

    # Добавляем заголовок
    title = slide.shapes.add_textbox(Inches(1), Inches(1), Inches(6), Inches(0.75))
    title_tf = title.text_frame
    title_tf.text = method
    title_tf.paragraphs[0].font.size = Pt(24)
    title_tf.paragraphs[0].font.name = 'Courier New'
    title_tf.paragraphs[0].alignment = PP_ALIGN.CENTER

    # Добавляем текст
    text = slide.shapes.add_textbox(Inches(1), Inches(2), Inches(6), Inches(4))
    text_tf = text.text_frame
    text_tf.text = help(random.__dict__[method]).strip()
    text_tf.paragraphs[0].font.name = 'Courier New'
    text_tf.paragraphs[0].alignment = PP_ALIGN.LEFT

# Сохраняем презентацию
prs.save('random_methods.pptx')
  • Вопрос задан
  • 60 просмотров
Решения вопроса 2
Vindicar
@Vindicar
RTFM!
help() выводит doc-string переданного объекта. Обычно этот doc-string лежит в атрибуте __doc__.
Так что можно сделать куда проще, чем подсовывать что-то вместо stdout:
help_text = getattr(obj, '__doc__', None)
В help_text будет None или строка документации.
Ответ написан
Комментировать
@rPman
подмени stdout на свою строку на время работы help и dir и потом обратно, с помощью io
import io
import sys
# Create a text buffer object
buffer = io.StringIO()
# Redirect stdout to the buffer
sys.stdout = buffer
# Call the help function
help(object)
# Reset stdout to default
sys.stdout = sys.__stdout__
# Get the string value from the buffer
help_in_string_format = buffer.getvalue()
# You can now use the string variable as required.
print(help_in_string_format)

p.s. очень удобно пользоваться chatgpt когда задачи простые и ты понимаешь как их решать, он берет на себя кучу скучной и не интересной работы
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы