[Python-checkins] cpython (3.4): Issue #23983: Update the pty module example.
berker.peksag
python-checkins at python.org
Tue May 12 16:25:28 CEST 2015
https://hg.python.org/cpython/rev/e656bece13fa
changeset: 95981:e656bece13fa
branch: 3.4
parent: 95979:7d722c9049ff
user: Berker Peksag <berker.peksag at gmail.com>
date: Tue May 12 17:25:06 2015 +0300
summary:
Issue #23983: Update the pty module example.
Changes:
* Fixed a ResourceWarning warning
* Used argparse instead of getopt
files:
Doc/library/pty.rst | 54 ++++++++++++++------------------
1 files changed, 23 insertions(+), 31 deletions(-)
diff --git a/Doc/library/pty.rst b/Doc/library/pty.rst
--- a/Doc/library/pty.rst
+++ b/Doc/library/pty.rst
@@ -58,40 +58,32 @@
pseudo-terminal to record all input and output of a terminal session in a
"typescript". ::
- import sys, os, time, getopt
- import pty
+ import argparse
+ import os
+ import pty
+ import sys
+ import time
- mode = 'wb'
- shell = 'sh'
- filename = 'typescript'
- if 'SHELL' in os.environ:
- shell = os.environ['SHELL']
+ parser = argparse.ArgumentParser()
+ parser.add_argument('-a', dest='append', action='store_true')
+ parser.add_argument('-p', dest='use_python', action='store_true')
+ parser.add_argument('filename', nargs='?', default='typescript')
+ options = parser.parse_args()
- try:
- opts, args = getopt.getopt(sys.argv[1:], 'ap')
- except getopt.error as msg:
- print('%s: %s' % (sys.argv[0], msg))
- sys.exit(2)
+ shell = sys.executable if options.use_python else os.environ.get('SHELL', 'sh')
+ filename = options.filename
+ mode = 'ab' if options.append else 'wb'
- for opt, arg in opts:
- # option -a: append to typescript file
- if opt == '-a':
- mode = 'ab'
- # option -p: use a Python shell as the terminal command
- elif opt == '-p':
- shell = sys.executable
- if args:
- filename = args[0]
+ with open(filename, mode) as script:
+ def read(fd):
+ data = os.read(fd, 1024)
+ script.write(data)
+ return data
- script = open(filename, mode)
+ print('Script started, file is', filename)
+ script.write(('Script started on %s\n' % time.asctime()).encode())
- def read(fd):
- data = os.read(fd, 1024)
- script.write(data)
- return data
+ pty.spawn(shell, read)
- sys.stdout.write('Script started, file is %s\n' % filename)
- script.write(('Script started on %s\n' % time.asctime()).encode())
- pty.spawn(shell, read)
- script.write(('Script done on %s\n' % time.asctime()).encode())
- sys.stdout.write('Script done, file is %s\n' % filename)
+ script.write(('Script done on %s\n' % time.asctime()).encode())
+ print('Script done, file is', filename)
--
Repository URL: https://hg.python.org/cpython
More information about the Python-checkins
mailing list