Python’s Standard Library - Part I
Josh Lawrence
Operating System Interface
The os module provides dozens of functions for interacting with the operating system:
import os #imports the os interface moduledir(os) #returns a list of module’s functionshelp(os) #returns an extensive manual pageSome os module functions:os.getcwd() # get current working directoryos.chdir('/usr/cs265') # change current working directoryos.system('mkdir lab1') # perform a mkdir in the system shell
Shutil module
• Use for daily file/directory management tasksimport shutil #copies data.db to archive.dbshutil.copyfile('data.db', 'archive.db')#move(source, destination)shutil.move('/build/executables', 'installdir')
File Wildcards
• The glob module provides a function for making file lists from directory wildcard searches
import globglob.glob('*.py') ['primes.py', 'random.py', 'quote.py']
Command Line Arguments
• Command line arguments are stored in the sys module’s argv attribute as a list:
• If at command line python demo.py one two three is executed:
import sysprint sys.argv ['demo.py', 'one', 'two', 'three']
Error Output Redirection and Program Termination
• The sys module also has attributes for stdin, stdout, and stderr. The latter is useful for emitting warnings and error messages to make them visible even when stdout has been redirected:
sys.stderr.write('Warning, log file not found, starting a new one\n')
Warning, log file not found, starting a new one
String Pattern Matching
• The re module provides regular expression tools for advanced string processing.
• r - Python’s raw string notation for regular expression patterns
re.findall(r'\bf[a-z]*', 'which foot or hand fell fastest')
['foot', 'fell', 'fastest']
Mathematics
• The math module gives access to the underlying C library functions for floating point math:
import mathmath.cos(math.pi / 4.0)0.70710678118654757 math.log(1024, 2) 10.0
Random• The random module provides tools for making random selections:import randomrandom.choice(['apple', 'pear', 'banana']) 'apple‘# sampling without replacementrandom.sample(xrange(100), 10)[30, 83, 16, 4, 8, 81, 41, 50, 18, 33]# random float random.random() 0.17970987693706186 # random integer chosen from range(6)random.randrange(6) 4
Internet Access• There are a number of modules for accessing the internet and
processing internet protocols. Two of the simplest are urllib2 for retrieving data from urls and smtplib for sending mail:
import urllib2 for line in
urllib2.urlopen('http://tycho.usno.navy.mil/cgi-bin/timer.pl'): if 'EST' in line or 'EDT' in line: # look for Eastern Timeprint line <BR>Nov. 25, 09:43:32 PM ESTimport smtplib server = smtplib.SMTP('localhost') server.sendmail('[email protected]', '[email protected]',
"""To: [email protected] ,From: [email protected] ,Beware the Ides of March. """)
server.quit()
Dates and Times• The datetime module supplies classes for manipulating dates and times in
both simple and complex ways. The module also supports objects that are timezone aware.
# dates are easily constructed and formattedfrom datetime import datenow = date.today()nowdatetime.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 arithmeticbirthday = date(1964, 7, 31)age = now – birthdayage.days 14368
Data Compression• Common data archiving and compression formats are directly
supported by modules including: zlib, gzip, bz2, zipfile and tarfile.import zlibs = 'witch which has which witches wrist watch‘len(s) 41 t = zlib.compress(s)len(t) 37zlib.decompress(t) 'witch which has which witches wrist watch‘zlib.crc32(s) 226805979
Performance Measurement
from timeit import TimerTimer('t=a; a=b; b=t', 'a=1; b=2').timeit() 0.57535828626024577Timer('a,b = b,a', 'a=1; b=2').timeit() 0.54962537085770791
Quality Control• The doctest module provides a tool for scanning a
module and validating tests embedded in a program’s docstrings.
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 # automatically validate the embedded testsdoctest.testmod()
Quality Control• The unittest module allows a more comprehensive set of
tests to be maintained in a separate file:import unittest class TestStatisticalFunctions(unittest.TestCase): def test_average(self):
self.assertEqual(average([20, 30, 70]), 40.0) self.assertEqual(round(average([1, 5, 7]), 1), 4.3) self.assertRaises(ZeroDivisionError, average, []) self.assertRaises(TypeError, average, 20, 30, 70)
# Calling from the command line invokes all testsunittest.main()
Questions
Top Related