By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
440,222 Members | 2,478 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 440,222 IT Pros & Developers. It's quick & easy.

putting text through pager

P: n/a
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
Mar 20 '08 #1
Share this Question
Share on Google+
1 Reply


P: n/a
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)
Mar 20 '08 #2

This discussion thread is closed

Replies have been disabled for this discussion.