I'm essentially trying to achieve this:
>>>print "SOME_VERY_LONG_TEXT" | more
Of course, it doesn't work in Python 2.7(IDLE).
Also, I tried pager 1.2's page()
function, but I don't know how to get it to work correctly.
Any ideas?
[UPDATE]
I found a lazy way, as follows:
import pydoc
pydoc.pager("SOME_VERY_LONG_TEXT")
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
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.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With