Иногда, бывает необходимо показать длинные тексты в терминале (например длинная справка по сценарию) и позволить пользователю прокручивать его. Такое поведение может быть достигнуто с помощью функции click.echo_via_pager()
, которая работает аналогично функции click.echo()
, но всегда записывает вывод в stdout
и, если возможно, через пейджер (прокрутку текста).
import click @click.command() def test(): text = "\n".join(f"Line {idx}" for idx in range(200)) click.echo_via_pager(text) if __name__ == '__main__': test()
Если необходимо использовать пейджер (прокрутку текста) для большого количества текста, особенно если его генерация займет много времени, то можно передать генератор или функцию генератора этого текста, вместо строки:
import click def _generate_output(): for idx in range(50000): yield f"Line {idx}\n" @click.command() def test(): click.echo_via_pager(_generate_output()) if __name__ == '__main__': test()