Python 标准库是随Python 附带安装的,它包含大量极其有用的模块。熟悉Python 标准库是十分重要的,因为如果你熟悉这些库中的模块,那么你的大多数问题都可以简单快捷地使用它们来解决。

sys 模块

>>> import sys
>>> sys.version_info
sys.version_info(major=3, minor=6, micro=3, releaselevel='final', serial=0)
>>> sys.version_info[0]
3

sys 模块有一个version_info 元组,它能给出版本的信息。第一个是主要的版本号。我们可以来检查这一条来保证程序运行在Python3.0 或以上。

import sys, warnings

if sys.version_info[0] < 3:
    warnings.warn("Need Python 3.0 for this program to run",RuntimeWarning)
else:
    print('Proceed as normal')

我们使用了标准库中的另一个叫做warning 的模块,来给最终用户显示警告信息。如果Python 版本号少于3,我们我们显示相应的警告。

logging 模块

可以用logging 模块来得到一些调试信息或重要信息并将其存储在某个地方

import os, platform, logging

if platform.platform().startswith('Windows'):
    logging_file = os.path.join(os.getenv('HOMEDRIVE'),'test.log')
else:
    logging_file = os.path.join(os.getenv('HOME'),'test.log')

logging.basicConfig(
    level = logging.DEBUG,
    format = '%(asctime)s : %(levelname
    )s : %(message)s',
    filename = logging_file,
    filemode = 'w',
    )

logging.debug("Start of the program")
logging.info("Doing something")
logging.warning("Dying now")

用了标准库中的三个模块——os 模块用来和操作系统交互,platform 模块用来得到平台的信息,例如像操作系统平台,logging 模块用来记录信息。

urllib 和json 模块

urllib 模块,可以用来从internet 上取来一些网页。

import sys

if sys.version_info[0] != 3:
    sys.exit('This program needs Python 3.0')

import json
import urllib, urllib.parse, urllib.request, urllib.response

#Get your own APP ID at http://developer.yahoo.com/wsregapp/
YAHOO_APP_ID = 'jl22psvV34HELWhdfUJbfDQzlJ2B57KFS_qs4I8D0Wz5U5_yCI1Awv8.lBSfPhwr'
SEARCH_BASE = 'http://search.yahooapis.com/WebSearchService/V1/webSearch'

class YahooSearchError(Exception):
    pass

# Taken from http://developer.yahoo.com/python/python-json.html
def search(query, results=20, start=1,**kwargs):
    kwargs.update({
    'appid':YAHOO_APP_ID,
    'query':query,
    'results':results,
    'start':start,
    'output':'json',
    })
    url = SEARCH_BASE + '?' + urllib.parse.urlencode(kwargs)
    result = json.load(urllib.request.urlopen(url))
    if 'Error' in result:
        raise YahooSearchError(result['Error'])
    return result['ResultSet']

query = input('What do you want to search for?')
for result in search(query)['Result']:
    print("{0}:{1}".format(result['Title'], result['Url']))

我们可以通过给出我们要搜索的特殊格式的文本从特殊的网站得到搜索结果。我们必须指定许多选项,我们用key1 = value1 & key2 = value2 格式表示,这就可以用urllib.parse.urlencode() 函数处理。

例如,在你的浏览器中打开这个链接,你会得到20 个结果,从第一个结果"byteof python",我们要求的输出结果是JSON 格式的。我们用urllib.request.urlopen() 函数连接到这个URL ,将文件句柄传递给json.load() ,它会读取其中的内容,同时转换为Python 对象。然后在这些结果上一次次循环,将其展示给终端用户。