mirror of
https://github.com/python/cpython.git
synced 2025-08-04 08:59:19 +00:00
Added "repeat.py" -- repeatedly execute a shell command (like
watch(1)). Updated and untabified the README file.
This commit is contained in:
parent
cadfaeca7f
commit
2b28776369
2 changed files with 64 additions and 7 deletions
|
@ -10,11 +10,11 @@ originals. I won't attempt to `beautify' the program anytime soon, but
|
|||
I wouldn't mind someone else making an effort in that direction, of
|
||||
course.
|
||||
|
||||
ncurses.py -- currently only a panels demo
|
||||
ncurses.py -- currently only a panels demo
|
||||
XXX this won't work until panel support is checked in
|
||||
rain.py -- raindrops keep falling on my desktop
|
||||
tclock.py -- ASCII clock, by Howard Jones
|
||||
xmas.py -- I'm dreaming of an ASCII christmas
|
||||
rain.py -- raindrops keep falling on my desktop
|
||||
tclock.py -- ASCII clock, by Howard Jones
|
||||
xmas.py -- I'm dreaming of an ASCII christmas
|
||||
|
||||
Please send bugfixes and new contributions to me or, even better,
|
||||
submit them to the Python Bug Tracker on SourceForge
|
||||
|
@ -24,6 +24,5 @@ submit them to the Python Bug Tracker on SourceForge
|
|||
Other demos
|
||||
===========
|
||||
|
||||
life.py Simple game of Life
|
||||
|
||||
|
||||
life.py -- Simple game of Life
|
||||
repeat.py -- Repeatedly execute a shell command (like watch(1))
|
||||
|
|
58
Demo/curses/repeat.py
Executable file
58
Demo/curses/repeat.py
Executable file
|
@ -0,0 +1,58 @@
|
|||
#! /usr/bin/env python
|
||||
|
||||
"""repeat <shell-command>
|
||||
|
||||
This simple program repeatedly (with 1-second intervals) executes the
|
||||
shell command given on the command line and displays the output (or as
|
||||
much of it as fits on the screen). It uses curses to paint each new
|
||||
output on top of the old output, so that if nothing changes, the
|
||||
screen doesn't change. This is handy to watch for changes in e.g. a
|
||||
directory or process listing.
|
||||
|
||||
To end, hit Control-C.
|
||||
"""
|
||||
|
||||
# Author: Guido van Rossum
|
||||
|
||||
# Disclaimer: there's a Linux program named 'watch' that does the same
|
||||
# thing. Honestly, I didn't know of its existence when I wrote this!
|
||||
|
||||
# To do: add features until it has the same functionality as watch(1);
|
||||
# then compare code size and development time.
|
||||
|
||||
import os
|
||||
import sys
|
||||
import time
|
||||
import curses
|
||||
|
||||
def main():
|
||||
if not sys.argv[1:]:
|
||||
print __doc__
|
||||
sys.exit(0)
|
||||
cmd = " ".join(sys.argv[1:])
|
||||
p = os.popen(cmd, "r")
|
||||
text = p.read()
|
||||
sts = p.close()
|
||||
if sts:
|
||||
print >>sys.stderr, "Exit code:", sts
|
||||
sys.exit(sts)
|
||||
w = curses.initscr()
|
||||
try:
|
||||
while 1:
|
||||
w.erase()
|
||||
try:
|
||||
w.addstr(text)
|
||||
except curses.error:
|
||||
pass
|
||||
w.refresh()
|
||||
time.sleep(1)
|
||||
p = os.popen(cmd, "r")
|
||||
text = p.read()
|
||||
sts = p.close()
|
||||
if sts:
|
||||
print >>sys.stderr, "Exit code:", sts
|
||||
sys.exit(sts)
|
||||
finally:
|
||||
curses.endwin()
|
||||
|
||||
main()
|
Loading…
Add table
Add a link
Reference in a new issue