I\'m essentially trying to achieve this:
>>>print \"SOME_VERY_LONG_TEXT\" | more
Of course, it doesn\'t work in Python 2.7(IDLE).
Writing something terminal and os independent might be a bigger task.
But if you can get the height of the terminal then you can use something like this this Assuming your input is a generator/list of line seperated text, or else you can call text.split('\n') before calling this function
def pagetext(text_lined, num_lines=25):
for index,line in enumerate(text_lined):
if index % num_lines == 0 and index:
input=raw_input("Hit any key to continue press q to quit")
if input.lower() == 'q':
break
else:
print line
Also there is a pager module on pypy haven't used it but the author says it was supposed to be included in the standard library.
You could call it as an external process. (You have to be careful with shell=True
, though.)
import subprocess
longStr = 'lots of text here'
subprocess.call(['echo "'+longStr+'" | more'], shell=True)
Although a bit late, the following worked for me:
def less(data):
process = Popen(["less"], stdin=PIPE)
try:
process.stdin.write(data)
process.communicate()
except IOError as e:
pass