Mercurial > cpython-lru_cache-weakref
annotate Demo/curses/repeat.py @ 79675:c0a2294de787 2.7
Issue #16199: Backport 2to3 typo fix from 3.2.
| author | Chris Jerdonek <chris.jerdonek@gmail.com> |
|---|---|
| date | Thu, 11 Oct 2012 16:15:46 -0700 |
| parents | bef0236d7bfa |
| children | 7d16b42fcdbd |
| rev | line source |
|---|---|
|
15748
79f9e333316e
Added "repeat.py" -- repeatedly execute a shell command (like
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1 #! /usr/bin/env python |
|
79f9e333316e
Added "repeat.py" -- repeatedly execute a shell command (like
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
2 |
|
79f9e333316e
Added "repeat.py" -- repeatedly execute a shell command (like
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
3 """repeat <shell-command> |
|
79f9e333316e
Added "repeat.py" -- repeatedly execute a shell command (like
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
4 |
| 38566 | 5 This simple program repeatedly (at 1-second intervals) executes the |
|
15748
79f9e333316e
Added "repeat.py" -- repeatedly execute a shell command (like
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
6 shell command given on the command line and displays the output (or as |
|
79f9e333316e
Added "repeat.py" -- repeatedly execute a shell command (like
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
7 much of it as fits on the screen). It uses curses to paint each new |
|
79f9e333316e
Added "repeat.py" -- repeatedly execute a shell command (like
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
8 output on top of the old output, so that if nothing changes, the |
|
79f9e333316e
Added "repeat.py" -- repeatedly execute a shell command (like
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
9 screen doesn't change. This is handy to watch for changes in e.g. a |
|
79f9e333316e
Added "repeat.py" -- repeatedly execute a shell command (like
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
10 directory or process listing. |
|
79f9e333316e
Added "repeat.py" -- repeatedly execute a shell command (like
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
11 |
|
79f9e333316e
Added "repeat.py" -- repeatedly execute a shell command (like
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
12 To end, hit Control-C. |
|
79f9e333316e
Added "repeat.py" -- repeatedly execute a shell command (like
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
13 """ |
|
79f9e333316e
Added "repeat.py" -- repeatedly execute a shell command (like
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
14 |
|
79f9e333316e
Added "repeat.py" -- repeatedly execute a shell command (like
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
15 # Author: Guido van Rossum |
|
79f9e333316e
Added "repeat.py" -- repeatedly execute a shell command (like
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
16 |
|
79f9e333316e
Added "repeat.py" -- repeatedly execute a shell command (like
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
17 # Disclaimer: there's a Linux program named 'watch' that does the same |
|
79f9e333316e
Added "repeat.py" -- repeatedly execute a shell command (like
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
18 # thing. Honestly, I didn't know of its existence when I wrote this! |
|
79f9e333316e
Added "repeat.py" -- repeatedly execute a shell command (like
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
19 |
|
79f9e333316e
Added "repeat.py" -- repeatedly execute a shell command (like
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
20 # To do: add features until it has the same functionality as watch(1); |
|
79f9e333316e
Added "repeat.py" -- repeatedly execute a shell command (like
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
21 # then compare code size and development time. |
|
79f9e333316e
Added "repeat.py" -- repeatedly execute a shell command (like
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
22 |
|
79f9e333316e
Added "repeat.py" -- repeatedly execute a shell command (like
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
23 import os |
|
79f9e333316e
Added "repeat.py" -- repeatedly execute a shell command (like
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
24 import sys |
|
79f9e333316e
Added "repeat.py" -- repeatedly execute a shell command (like
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
25 import time |
|
79f9e333316e
Added "repeat.py" -- repeatedly execute a shell command (like
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
26 import curses |
|
79f9e333316e
Added "repeat.py" -- repeatedly execute a shell command (like
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
27 |
|
79f9e333316e
Added "repeat.py" -- repeatedly execute a shell command (like
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
28 def main(): |
|
79f9e333316e
Added "repeat.py" -- repeatedly execute a shell command (like
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
29 if not sys.argv[1:]: |
|
79f9e333316e
Added "repeat.py" -- repeatedly execute a shell command (like
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
30 print __doc__ |
|
79f9e333316e
Added "repeat.py" -- repeatedly execute a shell command (like
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
31 sys.exit(0) |
|
79f9e333316e
Added "repeat.py" -- repeatedly execute a shell command (like
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
32 cmd = " ".join(sys.argv[1:]) |
|
79f9e333316e
Added "repeat.py" -- repeatedly execute a shell command (like
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
33 p = os.popen(cmd, "r") |
|
79f9e333316e
Added "repeat.py" -- repeatedly execute a shell command (like
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
34 text = p.read() |
|
79f9e333316e
Added "repeat.py" -- repeatedly execute a shell command (like
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
35 sts = p.close() |
|
79f9e333316e
Added "repeat.py" -- repeatedly execute a shell command (like
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
36 if sts: |
|
79f9e333316e
Added "repeat.py" -- repeatedly execute a shell command (like
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
37 print >>sys.stderr, "Exit code:", sts |
|
79f9e333316e
Added "repeat.py" -- repeatedly execute a shell command (like
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
38 sys.exit(sts) |
|
79f9e333316e
Added "repeat.py" -- repeatedly execute a shell command (like
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
39 w = curses.initscr() |
|
79f9e333316e
Added "repeat.py" -- repeatedly execute a shell command (like
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
40 try: |
| 38566 | 41 while True: |
|
15748
79f9e333316e
Added "repeat.py" -- repeatedly execute a shell command (like
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
42 w.erase() |
|
79f9e333316e
Added "repeat.py" -- repeatedly execute a shell command (like
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
43 try: |
|
79f9e333316e
Added "repeat.py" -- repeatedly execute a shell command (like
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
44 w.addstr(text) |
|
79f9e333316e
Added "repeat.py" -- repeatedly execute a shell command (like
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
45 except curses.error: |
|
79f9e333316e
Added "repeat.py" -- repeatedly execute a shell command (like
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
46 pass |
|
79f9e333316e
Added "repeat.py" -- repeatedly execute a shell command (like
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
47 w.refresh() |
|
79f9e333316e
Added "repeat.py" -- repeatedly execute a shell command (like
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
48 time.sleep(1) |
|
79f9e333316e
Added "repeat.py" -- repeatedly execute a shell command (like
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
49 p = os.popen(cmd, "r") |
|
79f9e333316e
Added "repeat.py" -- repeatedly execute a shell command (like
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
50 text = p.read() |
|
79f9e333316e
Added "repeat.py" -- repeatedly execute a shell command (like
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
51 sts = p.close() |
|
79f9e333316e
Added "repeat.py" -- repeatedly execute a shell command (like
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
52 if sts: |
|
79f9e333316e
Added "repeat.py" -- repeatedly execute a shell command (like
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
53 print >>sys.stderr, "Exit code:", sts |
|
79f9e333316e
Added "repeat.py" -- repeatedly execute a shell command (like
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
54 sys.exit(sts) |
|
79f9e333316e
Added "repeat.py" -- repeatedly execute a shell command (like
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
55 finally: |
|
79f9e333316e
Added "repeat.py" -- repeatedly execute a shell command (like
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
56 curses.endwin() |
|
79f9e333316e
Added "repeat.py" -- repeatedly execute a shell command (like
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
57 |
|
79f9e333316e
Added "repeat.py" -- repeatedly execute a shell command (like
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
58 main() |
