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
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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
bef0236d7bfa Docstring fix; use True
Andrew M. Kuchling <amk@amk.ca>
parents: 15748
diff changeset
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
bef0236d7bfa Docstring fix; use True
Andrew M. Kuchling <amk@amk.ca>
parents: 15748
diff changeset
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()