putting text through pager

M

Michael Goerz

Hi,

I'm trying to print some variable through a pager (i.e. 'less') on a
linux system. My attempt was this:


====== snip here ======
import subprocess

def put_through_pager(displaystring):
less_pipe = subprocess.Popen(\
'less', shell=True, \
stdin=subprocess.PIPE).stdin
less_pipe.write(displaystring)
less_pipe.close()

def main():
put_through_pager(longstring)


longstring = """
Lorem ipsum dolor sit amet,...
http://www.lipsum.com/
"""

main()

====== snip here ======

That doesn't work however: first of all, it only flashes the text for a
fraction of a second, and secondly, after I run the program my terminal
is broken, not echoing whatever I type back to me.

Any suggestions for putting text through a pager from Python? This is
strictly on a linux system, of course.

Thanks,
Michael
 
M

Michael Goerz

Michael Goerz wrote, on 03/20/2008 04:43 PM:
Hi,

I'm trying to print some variable through a pager (i.e. 'less') on a
linux system. My attempt was this:


====== snip here ======
import subprocess

def put_through_pager(displaystring):
less_pipe = subprocess.Popen(\
'less', shell=True, \
stdin=subprocess.PIPE).stdin
less_pipe.write(displaystring)
less_pipe.close()

def main():
put_through_pager(longstring)


longstring = """
Lorem ipsum dolor sit amet,...
http://www.lipsum.com/
"""

main()

====== snip here ======

That doesn't work however: first of all, it only flashes the text for a
fraction of a second, and secondly, after I run the program my terminal
is broken, not echoing whatever I type back to me.

Any suggestions for putting text through a pager from Python? This is
strictly on a linux system, of course.

Thanks,
Michael
Using a tempfile seems to be a good solution:

def put_through_pager(displaystring):
(temp_fd, tempname) = tempfile.mkstemp(".mail")
temp_fh = os.fdopen(temp_fd, "w")
temp_fh.write(displaystring)
temp_fh.close()
os.system("less %s" % tempname)
os.unlink(tempname)
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,769
Messages
2,569,579
Members
45,053
Latest member
BrodieSola

Latest Threads

Top