2013-03-12 3 views
3

У меня есть программа, которая выводит где угодно от 300-1000 строк данных. Вместо того, чтобы все это выводить сразу, я хотел бы, чтобы у него был интерфейс, подобный manpages, где он отображает первые 50 или около того строк ввода, а затем пользователь может нажать «f» или «b», чтобы перемещаться по страницы. Есть ли способ сделать это в Python?Создание «прокручиваемого» вывода в программах командной строки

Примечание: Я хочу распространять программу, и я не хочу заставлять пользователей обрабатывать вывод меньше/больше. Более того, вывод происходит в середине программы и не является единственным выходом программы, поэтому я не уверен, что это сработает.

+0

вы всегда можете пропустить его через 'less' или' more' – mpen

+0

Почему бы вам не использовать простую команду 'less' в bash? Из вашего вопроса, похоже, вы все равно используете командную строку –

+1

Да, но я хочу распространять программу и сделать ее максимально удобной для пользователя. Конечно, любой, кто использует программу командной строки, в первую очередь, знает о 'less' или' more', но все же приятно иметь этот формат, отформатированный для вас. Кроме того, выход не обязательно является окончанием программы. У пользователя будет больше параметров после вывода текста. – user1427661

ответ

2

Примечание: Я бы никогда не сделал этого, и я думаю, что это очень плохо UIX, но ...

pager = subprocess.Popen(['less'], stdin=subprocess.PIPE) 

Затем запишите все вывода вашей работы команды в файл-подобный объект: pager.stdin

Смежные вопросы