THE PYTHON STD LIB BY EXAMPLE
– APPLICATION BUILDING BLOCKS
John
Saturday, December 21, 2013
Brief introduction
• This lesson covers some of the more frequently
reused building blocks that solve problems
common to m...
Module getopt – option parsing
• The getopt() take 3 arguments:
1. The sequeence of arguments to be parsed.
Usually it is ...
Quick example 1
# file test.py
import getopt
import sys
opts,args = getopt.getopt(sys.argv[1:],’ab:c:’)
for opt in opts:
p...
quick example 2
# file test.py
import getopt
import sys
opts,args = getopt.getopt(sys.argv[1:],’’,[‘opta’,’optb=‘,’optc=‘]...
Module optparse
• it is a modern alternative for module getopt
Quick example

Example 2:
More options in add_option
method
• option dest: the attribute name
• option default: the default value. also can be set i...
Module argparse
• argparse added to python 2.7 as a
replacement of optparse.
• Change the OptionParser by ArgumentParser,
...
More Options of ArgumentParser
• add help automatically:

parser = argparse.ArgumentParser(add_help=True)

• version contr...
More options of add_argument
method
• All options in optparse.add_option method.
• option nargs: number of expected
argume...
Module getpass: handle passowrd
prompts securely
• print a promt and then read input from the user.

• We can change the p...
MODULE CMD:
BUILD COMMAND
LINE PROCESSORS
brief introduction
• the Cmd class is used as base class for
interactive shells and other command
interpreters.
• It can p...
quick example

• method do_greet() connect with command “greet”
• method help_greet() connect with command “help greet”
auto-completion
• auto-completion is already enabled in previous
example.
• if user want to do user-defined on auto-comple...
Overrite Base Class method
• Method cmploop(intro) is the main
processing loop. Each iteration in cmdloop
call parseline a...
Running shell command
• An exclamation point(!) map to the do_shell()
method and is intended “shelling out” to run other
c...
THE LOGGING
MODULE
Brief introduction
• The logging module define standard API for
reporting error and status information.
• Both application...
Logging to file
• Use basicConfig set the log file name
The level of the events logging
tracks
Level

Numeric
value

When it’s used

DEBU Detailed information, typically of inter...
Best practice: logging in single file
import logging
logging.basicConfig(level=logging.WARNING) # Only the level
equal or ...
Best practice: Logging from
multiple modules
• Define logging config
in main file

• Write log in other files
Upcoming SlideShare
Loading in …5
×

Python advanced 3.the python std lib by example – application building blocks

407 views
246 views

Published on

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
407
On SlideShare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
10
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Python advanced 3.the python std lib by example – application building blocks

  1. 1. THE PYTHON STD LIB BY EXAMPLE – APPLICATION BUILDING BLOCKS John Saturday, December 21, 2013
  2. 2. Brief introduction • This lesson covers some of the more frequently reused building blocks that solve problems common to many applications • Command-line argument parsing: module getopt,optparse,argparse. • Interactive programs: readline, cmd, shlex,fileinput • Manage application configuration: ConfigParser • Manage log file: logging • Others: atexit, sched etc
  3. 3. Module getopt – option parsing • The getopt() take 3 arguments: 1. The sequeence of arguments to be parsed. Usually it is sys.argv[1:] 2. Single-character option, following a colon(:) mean it require an argument. E.g. ab:c:, it mean a is -a simple flag, while –b and –c require an argument. 3. It is optional. If used, it is a list of long-style option names. Having suffix “=“ means ruquire an argument. E.g [‘noarg’,’witharg=‘]
  4. 4. Quick example 1 # file test.py import getopt import sys opts,args = getopt.getopt(sys.argv[1:],’ab:c:’) for opt in opts: print opt •Then run command line “python test.py –a –b valb –c valc”, the output should be ('-a', '') ('-b', 'val') ('-c', 'val')
  5. 5. quick example 2 # file test.py import getopt import sys opts,args = getopt.getopt(sys.argv[1:],’’,[‘opta’,’optb=‘,’optc=‘]) for opt in opts: print opt •run command line “python test.py --opta --optb val --optc val” ('--opta', '') ('--optb', 'val') ('--optc', 'val')
  6. 6. Module optparse • it is a modern alternative for module getopt
  7. 7. Quick example Example 2:
  8. 8. More options in add_option method • option dest: the attribute name • option default: the default value. also can be set in set_defaults method. • option type: convert the argument string to specific type, e.g. int, float,string • option choices: validation use a list of candidate strings. e.g. choices=[‘a’,’b’,’c’] . the valid value should be ‘a’, or ‘b’ or ‘c’ • option help: help message • option action: store, store_const,store_true,append,acount
  9. 9. Module argparse • argparse added to python 2.7 as a replacement of optparse. • Change the OptionParser by ArgumentParser, and add_option by add_argument in previous example.
  10. 10. More Options of ArgumentParser • add help automatically: parser = argparse.ArgumentParser(add_help=True) • version control: version=‘1.0’ (-v or --version will show the version number)
  11. 11. More options of add_argument method • All options in optparse.add_option method. • option nargs: number of expected arguments. (? mean 0 or 1 arguments, * means 0 or all, + means 1 or all). example parser.add_argument(‘-c’,nargs=3) we need write command line “perl -c 1 2 3”
  12. 12. Module getpass: handle passowrd prompts securely • print a promt and then read input from the user. • We can change the prompt: getpass(prompt=‘what is your favorite color?’)
  13. 13. MODULE CMD: BUILD COMMAND LINE PROCESSORS
  14. 14. brief introduction • the Cmd class is used as base class for interactive shells and other command interpreters. • It can provide interactive prompt, commandline editing, and command completion.
  15. 15. quick example • method do_greet() connect with command “greet” • method help_greet() connect with command “help greet”
  16. 16. auto-completion • auto-completion is already enabled in previous example. • if user want to do user-defined on auto-completion, use complete_<comand> (e.g. complete_greet() )
  17. 17. Overrite Base Class method • Method cmploop(intro) is the main processing loop. Each iteration in cmdloop call parseline and onecmd. • Method emptyline: behavior if emptyline. Default behavior is that rerun previous command. • Method default: default method if command is not found.
  18. 18. Running shell command • An exclamation point(!) map to the do_shell() method and is intended “shelling out” to run other commands. • First import subprocess module. • Second, define do_shell() method
  19. 19. THE LOGGING MODULE
  20. 20. Brief introduction • The logging module define standard API for reporting error and status information. • Both application developer and module author benefit from this module, but has different considerations.
  21. 21. Logging to file • Use basicConfig set the log file name
  22. 22. The level of the events logging tracks Level Numeric value When it’s used DEBU Detailed information, typically of interest only when G diagnosing problems. INFO Confirmation that things are working as expected. An indication that something unexpected happened, or WAR indicative of some problem in the near future (e.g. ‘disk space NING low’). The software is still working as expected. ERRO Due to a more serious problem, the software has not been R able to perform some function. CRITIC A serious error, indicating that the program itself may be AL unable to continue running. 10 20 30 40 50
  23. 23. Best practice: logging in single file import logging logging.basicConfig(level=logging.WARNING) # Only the level equal or alove this level can be displayed. logging.debug('This message should go to the log file') logging.info('So should this') logging.warning('And this, too') •Write the log to file: logging.basicConfig(filename='example.log',level=logging.DEBU G)
  24. 24. Best practice: Logging from multiple modules • Define logging config in main file • Write log in other files

×