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) -- http://mail.python.org/mailman/listinfo/python-list