Python3 Standard Library Overview

The Python standard library is very large, covering a wide range of components. Using the standard library, we can easily accomplish various tasks.

The following are some modules in the Python3 standard library:

  • os module: The os module provides many functions for interacting with the operating system, such as creating, moving, and deleting files and directories, as well as accessing environment variables.

  • sys module: The sys module provides functions related to the Python interpreter and system, such as the interpreter's version and path, as well as information about stdin, stdout, and stderr.

  • time module: The time module provides functions for handling time, such as getting the current time, formatting dates and times, timing, etc.

  • datetime module: The datetime module provides more advanced date and time processing functions, such as handling time zones, calculating time differences, calculating date differences, etc.

  • random module: The random module provides functions for generating random numbers, such as generating random integers, floating-point numbers, sequences, etc.

  • math module: The math module provides mathematical functions, such as trigonometric functions, logarithmic functions, exponential functions, constants, etc.

  • re module: The re module provides regular expression processing functions, which can be used for text search, replacement, splitting, etc.

  • json module: The json module provides JSON encoding and decoding functions, which can convert Python objects to JSON format and parse Python objects from JSON format.

  • urllib module: The urllib module provides functions for accessing web pages and handling URLs, including downloading files, sending POST requests, handling cookies, etc.

Operating System Interface

The os module provides many functions related to the operating system, such as file and directory operations.

Example

import os

# Get the current working directory
current_dir = os.getcwd()
print("Current working directory:", current_dir)

# List files in the directory
files = os.listdir(current_dir)
print("Files in the directory:", files)

It is recommended to useimport osstyle rather thanfrom os import *, this ensures that what varies with the operating systemos.open()will not override the built-in function open().

When using large modules like os, the built-in dir() and help() functions are very useful:

>>> import os
>>> dir(os)
<returns a list of all module functions>
>>> help(os)
<returns an extensive manual page created from the module's docstrings>

For daily file and directory management tasks, the :mod:shutil module provides an easy-to-use high-level interface:

>>> import shutil
>>> shutil.copyfile('data.db', 'archive.db')
>>> shutil.move('/build/executables', 'installdir')

File Wildcards

The glob module provides a function for generating file lists from directory wildcard searches:

Example

>>> import glob
>>> glob.glob('*.py')
['primes.py', 'random.py', 'quote.py']

Command Line Arguments

Common utility scripts often invoke command line arguments. These command line arguments are stored in the argv variable of the sys module in list form. For example, after executing "python demo.py one two three" on the command line, the following output can be obtained:

Example

>>> import sys
>>> print(sys.argv)
['demo.py', 'one', 'two', 'three']

Error Output Redirection and Program Termination

sys also has stdin, stdout, and stderr attributes; even when stdout is redirected, the latter can be used to display warnings and error messages.

Example

>>> sys.stderr.write('Warning, log file not found starting a new one\n')
Warning, log file not found starting a new one

Most scripts use directed terminationsys.exit()。


String Regular Expression Matching

reThe module provides regular expression tools for advanced string processing. For complex matching and processing, regular expressions provide concise, optimized solutions:

Example

>>> 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 the hat')
'cat in the hat'

If you only need simple functionality, you should first consider string methods, because they are very simple, easy to read and debug:

>>> 'tea for too'.replace('too', 'two')
'tea for two'

Math

mathThe module provides access to the underlying C function library for floating-point operations:

Example

>>> import math
>>> math.cos(math.pi / 4)
0.70710678118654757
>>> math.log(1024, 2)
10.0

randomProvides tools for generating random numbers.

Example

>>> import random
>>> random.choice(['apple', 'pear', 'banana'])
'apple'
>>> random.sample(range(100), 10)   # sampling without replacement
[30, 83, 16, 4, 8, 81, 41, 50, 18, 33]
>>> random.random()    # random float
0.17970987693706186
>>> random.randrange(6)    # random integer chosen from range(6)
4

Access the Internet

There are several modules for accessing the internet and handling network communication protocols. The two simplest are urllib.request for processing data received from URLs and smtplib for sending emails:

Example

>>> from urllib.request import urlopen
>>> for line in urlopen('http://tycho.usno.navy.mil/cgi-bin/timer.pl'):
...     line = line.decode('utf-8')  # Decoding the binary data to text.
...     if 'EST' in line or 'EDT' in line:  # look for Eastern Time
...         print(line)

<BR>Nov. 25, 09:43:32 PM EST

>>> 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()

Note that the second example requires a mail server running locally.


Date and Time

datetimeThe module provides both simple and complex methods for date and time processing.

While supporting date and time arithmetic, the implementation focuses on more efficient processing and formatted output.

Example

import datetime

# Get the current date and time
current_datetime = datetime.datetime.now()
print(current_datetime)

# Get the current date
current_date = datetime.date.today()
print(current_date)

# Format the date
formatted_datetime = current_datetime.strftime("%Y-%m-%d %H:%M:%S")
print(formatted_datetime)  # Output: 2023-07-17 15:30:45

The output result is:

2023-07-17 18:37:56.036914
2023-07-17
2023-07-17 18:37:56

The module also supports time zone handling:

>>> # 导入了 datetime 模块中的 date 类
>>> from datetime import date
>>> now = date.today()    # 当前日期
>>> now
datetime.date(2023, 7, 17)
>>> now.strftime("%m-%d-%y. %d %b %Y is a %A on the %d day of %B.")
'07-17-23. 17 Jul 2023 is a Monday on the 17 day of July.'

>>> # 创建了一个表示生日的日期对象
>>> birthday = date(1964, 7, 31)
>>> age = now - birthday   # 计算两个日期之间的时间差
>>> age.days             # 变量age的days属性,表示时间差的天数
21535

Data Compression

The following modules directly support common data packaging and compression formats: zlib, gzip, bz2, zipfile, and tarfile.

>>> import zlib
>>> s = b'witch which has which witches wrist watch'
>>> len(s)
41
>>> t = zlib.compress(s)
>>> len(t)
37
>>> zlib.decompress(t)
b'witch which has which witches wrist watch'
>>> zlib.crc32(s)
226805979

Performance Measurement

Some users are interested in knowing the performance differences between different methods for solving the same problem. Python provides a measurement tool that gives direct answers to these problems.

For example, using tuple packing and unpacking to swap elements looks much more appealing than using traditional methods; timeit proves that the modern method is faster.

>>> 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

Compared to timeit's fine granularity, the :mod:profile and pstats modules provide time measurement tools for larger code blocks.


Testing Modules

One way to develop high-quality software is to develop test code for each function and test frequently during the development process.

The doctest module provides a tool that scans modules and executes tests based on embedded docstrings in the program.

The test construction is as simple as cutting and pasting its output into the docstring.

Through user-provided examples, it enhances the documentation, allowing the doctest module to confirm whether the code's results match the documentation:

def average(values):
    """Computes the arithmetic mean of a list of numbers.

    >>> print(average([20, 30, 70]))
    40.0
    """
    return sum(values) / len(values)

import doctest
doctest.testmod()   # 自动验证嵌入测试

The unittest module is not as easy to use as the doctest module, but it can provide a more comprehensive test suite 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)

unittest.main() # Calling from the command line invokes all tests

What we have seen above is only part of the Python3 standard library modules. There are many other modules. You can view the complete standard library documentation in the official documentation:https://docs.python.org/zh-cn/3/library/index.html

Other Extensions