putting text through pager

Michael Goerz newsgroup898sfie at 8439.e4ward.com
Thu Mar 20 18:31:02 EDT 2008


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)



More information about the Python-list mailing list