Python Standard Library By Joshua ODonoghue Operating System
Python Standard Library By: Joshua O’Donoghue
Operating System Interface �In order to interact with the operating system in python you will want to become familiar with the OS module �This module can be used with the command “import os” �Useful functions to aid in using this module are dir(os) which returns a list of all module functions and help(os) which returns a manual page created from the module’s docstrings
Operating Systems Interface �Daily file and directory management tasks can be performed with the shutil module �>>> import shutil � >>> shutil. copyfile('data. db', 'archive. db') � >>> shutil. move('/build/executables', 'installdir')
File Wildcards �The glob module is a function used for making lists from directory wildcard searches: �>>> import glob � >>> glob('*. py') � ['primes. py', 'random. py', 'quote. py']
Error Output Redirection and Program Termination �The attributes stdin, stdout, and stderr are also part of the “sys” module �These are useful for outputting warnings and error messages �The most direct way to terminate a script is to use sys. exit() � >>> sys. stderr. write('Warning, log file not found starting a new onen') Warning, log file not found starting a new one
String Pattern Matching �The re module provides regular expression tools for string processing. � >>> import re � >>> re. findall(r'bf[a-z]*', 'which foot or hand fell fastest') � ['foot', 'fell', 'fastest'] � >>> re. sub(r'(b[a-z]+) 1', r'1', 'cat in the hat') � 'cat in the hat' �String methods are easier to read and debug, therefore are preferred when only simple capabilities are needed � >>> 'tea for too'. replace('too', 'two') � 'tea for two'
Command Line Arguments �Common utility scripts often need to process command line arguments which are stored in the “sys” module’s “argv” attribute �These attributes are stored as a list �>>> import sys � >>> print sys. argv � ['demo. py', 'one', 'two', 'three']
Mathematics �The math module gives access to C library functions for floating point math �>>> import math �>>> math. cos(math. pi / 4. 0) � 0. 70710678118654757 �>>> math. log(1024, 2) � 10. 0
Mathematics �Random Numbers can be created using the random module � >>> import random � >>> random. choice(['apple', 'pear', 'banana']) � 'apple' � >>> random. sample(xrange(100), 10) # sampling without replacement � [30, 83, 16, 4, 8, 81, 41, 50, 18, 33] � >>> random() # random float � 0. 17970987693706186 � >>> random. randrange(6) # random integer chosen from range(6) � 4
Internet Access �Two of the simplest modules for accessing the internet are urllib 2 and smtplib. �Urllib 2 is used for retrieving data � >>> import urllib 2 � >>> for line in urllib 2. urlopen('http: //tycho. usno. navy. mil/cgi-bin/timer. pl'): �. . . if 'EST' in line or 'EDT' in line: # look for Eastern Time. . . print line <BR>Nov. 25, 09: 43: 32 PM EST
Internet Access �Smtplib is used for sending mail � >>> import smtplib � >>> server = smtplib. SMTP('localhost') � >>> server. sendmail('soothsayer@example. org', 'jcaesar@example. org', . . . """To: jcaesar@example. org �. . . From: soothsayer@example. org �. . . Beware the Ides of March. �. . . """) � >>> server. quit()
Dates and Times � The datetime module supplies classes for manipulating dates and times. � This module supports objects that are timezone aware � � � � >>> # dates are easily constructed and formatted >>> from datetime import date >>> now = date. today() >>> now datetime. date(2003, 12, 2) >>> now. strftime("%m-%d-%y. %d %b %Y is a %A on the %d day of %B. ") '12 -02 -03. 02 Dec 2003 is a Tuesday on the 02 day of December. ' � � � >>> # dates support calendar arithmetic >>> birthday = date(1964, 7, 31) >>> age = now - birthday >>> age. days 14368
Data Compression � Common data archiving and compression formats are directly supported by the modules: zlib, gzip, bz 2, zipfile, and tarfile � >>> import zlib � >>> s = 'witch which has which witches wrist watch' � >>> len(s) � 41 � >>> t = zlib. compress(s) � >>> len(t) � 37 � >>> zlib. decompress(t) � 'witch which has which witches wrist watch' � >>> zlib. crc 32(s) � 226805979
Performance Measurement �Many users wish to know the performance of different approaches to the same problem �The timeit module quickly can demonstrate performance advantages �>>> from timeit import Timer �>>> Timer('t=a; a=b; b=t', 'a=1; b=2'). timeit() 0. 57535828626024577 �>>> Timer('a, b = b, a', 'a=1; b=2'). timeit() 0. 54962537085770791
Quality Control �In order to develop high quality software, you should write tests for each function and run them frequently during the developmental process �The module that provides a tool for scanning and validating tests embedded in the docstrings is “doctest” �def average(values): �"""Computes the arithmetic mean of a list of numbers. �>>> print average([20, 30, 70]) � 40. 0 � ""“ � return sum(values, 0. 0) / len(values) �import doctest �doctestmod() # automatically validate the embedded tests
Quality Control �The unitest module is not as effortless as the doctest module, but it does allow for a more comprehensive set of tests to be maintained in a separate file: �import unittest �class Test. Statistical. Functions(unittest. Test. Case): �def test_average(self): �self. assert. Equal(average([20, 30, 70]), 40. 0) self. assert. Equal(round(average([1, 5, 7]), 1), 4. 3) self. assert. Raises(Zero. Division. Error, average, []) self. assert. Raises(Type. Error, average, 20, 30, 70) �unittest. main() # Calling from the command line invokes all tests
Batteries Included �The xmlrpclib and simple. XMLRPCServer modules make implementing remote procedure calls into an almost trivial task, and works needing no knowledge or handling of XML despite their names �The email package is a library for managing email messages and contains a complete toolset for building or decoding complex message structures.
Batteries Included �The xml. dom and xml. sax packages provide support for parsing popular data interchange format. �The csv module supports direct reads and writes in a common database format. These modules are extremely useful in simpifying data interchange between python applications and other tools.
Source Used �http: //docs. python. org/tutorial/stdlib. html
- Slides: 19