简明Python3教程 16.标准库

简介

python标准库作为python标准安装的一部分,其自身包含数量庞大的实用模块,

因此熟悉python标准库非常重要,因为很多问题都能利用python标准库快速解决。

下面我们将研究标准库中的一些常用模块。完整的标准库模块列表可以在安装python时附带的文档中的’Library Reference’一节找到。

现在就让我们来看看这些模块吧。

 

提示

如果你感觉本章内容对于你过于超前,那么可以跳过本章。但是当你熟悉python编程后我强烈建议你把这章补上。

 

sys模块

sys模块包含一些系统相关的功能。先前我们已经见识过sys.argv列表,它包括命令行参数。

假设我们想要检查所使用的python命令行的版本,比方说我们需要确定正在使用的版本不低于3

诸如此类的功能正是sys模块所提供的。

>>> import sys

>>> sys.version_info

(3, 0, 0, 'beta', 2)

>>> sys.version_info[0] >= 3

True

代码如何工作:

sys模块含有一个version_info元组用于提供版本信息。其第一个元素为主版本。

因此我们可以通过检查它确保程序只会运行在python 3.0和3.0以上:

#!/usr/bin/python

# Filename: versioncheck.py

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

输出:

    $ python2.5 versioncheck.py

    versioncheck.py:6: RuntimeWarning: Need Python 3.0 for this program to run

      RuntimeWarning)

   

    $ python3 versioncheck.py

    Proceed as normal

代码如何工作:

这里我们使用标准库中另一个名为warnings的模块,用于向最终用户显示警告信息。

如果python版本号小于3,则显示相应的警告。

 

loggin模块

如果你希望得到存储在某处的重要信息或调试信息,以便检查程序是否如期运行时该咋办呢?你如何将这些信息存储在某处呢?

这些可以通过logging模块做到。

#!/usr/bin/python

# Filename: use_logging.py

import os, platform, logging

if platform.platform().startswith('Windows'):

    logging_file = os.path.join(os.getenv('HOMEDRIVE'),

os.getenv('HOMEPATH'), '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")

输出:

    $python use_logging.py

    Logging to C:/Users/swaroop/test.log

If we check the contents of test.log, it will look something like this:

    2008-09-03 13:18:16,233 : DEBUG : Start of the program

    2008-09-03 13:18:16,233 : INFO : Doing something

    2008-09-03 13:18:16,233 : WARNING : Dying now

代码如何工作:

我们使用了3个标准库模块 – os模块与系统交互,platform模块取得平台信息,即操作系统信息。而logging模块用于记录日志信息。

首先,我们通过platform.platform(详见import platform; help(platform))返回的字符串检测操作系统类型。

如果为windows系统,则分别计算出主驱动器,主目录与文件名,这个文件用于存储相关信息。然后将这三部分合并得到文件的全路径。

对于其他平台,我们只需得到用户的主目录就能计算出文件的全路径了。

我们之所以没有简单的使用字符串连接合并这三部分而是利用os.path.join,原因在于这个特殊的函数可以确保路径格式符合特定系统的规范。

之后我们配置logging模块,指示在我们指定的文件中以特殊的格式写入所有信息。

最后,我们就能写入信息了,它们可以是调试信息,警告信息甚至是危机信息(critical messages)。

一但程序开始运行,我们就可以检查这个文件以了解程序发生了什么,而用户并不会看到这些信息。

 

urllibjson模块

如果我们让自己编写的程序在web上获得搜索结果是不是很有趣呢?我们现在就来研究下。

这个功能可以通过少量模块实现。第一urllib模块使得我们可以访问internet上的任何网页。

这里我们准备利用雅虎搜索获得搜索结果,它恰好以一种被称作JSON的格式为我们提供搜索结果。

这种格式分析起很方便,因为我们使用的是标准库中的内建json模块。

#!/usr/bin/python

# Filename: yahoo_search.py

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']))

代码如何工作:

(注:这个例子目前有错误,暂且跳过)

 

Module of the Week系列

标准库中还有更多内容有待探索,例如debug(http://docs.python.org/dev/library/pdb.html),

处理命令行选项(http://docs.python.org/py3k/library/getopt.html),

正则表达式(http://www.diveintopython.org/regular_expressions/index.html)等等。

而进一步研究标准库的最好办法就是阅读Python Module of the Week系列了(http://www.doughellmann.com/projects/PyMOTW/)。

 

小结

我们已经探索了许多标准库模块中的功能。强烈推荐浏览python标准库文档以便对所有模块有个概念性的认识(http://docs.python.org/py3k/library/)

接下来,我们将概览python的方方面面让我们的python之旅更加完整

 

 

 

--------------Python书籍推荐-----------------

Python基础教程-第2版.修订版 

购买地址1  购买地址2

 

 

PYTHON核心编程

购买地址1  购买地址2

 

 

零基础学Python

购买地址1  购买地址2

时间: 2024-10-03 01:25:36

简明Python3教程 16.标准库的相关文章

简明Python3教程(A Byte of Python 3)

 关键字:[A Byte of Python v1.92(for Python 3.0)] [A Byte of Python3] 简明Python教程 Python教程 简明Python3教程    简明Python3教程<A Byte of Python3>是一本关于用Python3语言编程的书.可以作为初学这的入门教程.也可以供计算机相关人员参考. 本书可作为Python编程语言的指导或辅导.主要是针对新手的,当然,对于有经验的程序员也很有用.如果你所了解的计算机的知识就是如何保存文本文

简明Python3教程 15.异常

简介 当程序发生意外情况时则产生异常. 例如你需要读一个文件而这个文件并不存在会咋样?又或者是程序运行时你把它误删除了呢? 上述情形通过异常进行处理. 类似的,如果你的程序存在一些非法语句会发生什么呢?这时python会举手告诉你存在一个错误.   错误 考虑一个简单的print函数调用.如果我们把print错拼成Print(注意大小写),这时python将引发一个语法错误.     >>> Print('Hello World')     Traceback (most recent

简明Python3教程 12.问题解决

我们已经探究了python语言的方方面面,现在我们将通过设计编写一个有用的程序将这些内容有机的结合起来. 主要目标是让大家有能力独自编写程序.                      问题 我们要解决的问题是"希望编写一个程序,用于创建所有重要文件的备份". 尽管这个问题很简单,但并没有给出足够多的直观信息用以创建解决方案.所以进行少量的分析还是必须的. 例如,如何指定哪些文件需要备份?如何存储?存在哪? 适当的分析过问题后,我们开始设计程序.我们创建一个用于指明程序应该如何工作的列

简明Python3教程 3.介绍

介绍 Python是少有的几种既强大又简单的编程语言.你将惊喜地发现通过使用Python即可轻松专注于解决问题而非和你所用的语言格式与结构. 下面是Python的官方介绍: Python is an easy to learn, powerful programming language. It has efficient high-level data structures and a simple but effective approach to object-oriented progr

简明Python3教程 10.模块

简介 现在你已经知道通过定义函数可以在你的程序中复用代码.但当你想在你编写的其他程序中复用大量函数怎么办呢? 也许你可以猜到了,办法就是利用模块. 有各种编写模块的方式,但最简单的方式是创建一个以.py为后缀的文件并包含所需的函数与变量. 另一种方式是以编写python解释器的本地语言编写模块. 例如C语言编写的模块被编译后可供运行于标准python解释器上的python代码使用. 模块可以被其它程序导入以使用其提供的功能.这也是为什么我们可以使用python标准库. 我们先来看看如何使用标准库

简明Python3教程 6.基础

你肯定不满足于只打印"Hello World"吧? 你想要的更多 - 你希望得到一些输入,操纵它后再从中得到某些东西.我们可以使用python中的常量和变量实现这些功能.   字面常量(literal constant)字面常量的一个例子是数字诸如5, 1.23, 9.25e-3或字符串This is a string', "It's a string!".顾名思义,字面常量的重点在于"字面", 你直接以字面的意义使用它们.数字2永远是数字2绝不

简明Python3教程 5.第一步

介绍 我们现在来看看如何在Python中运行传统的"Hello world"程序.这会教你如何写.保存以及运行Python程序. 有两种办法来运行您的Python程序--使用交互式的解释器提示符或者源代码文件.我们现在来分别看一看这两种方法. 使用解释器提示符 在命令提示符中输入python来打开解释器. 那些在GNU/Linux与BSD上同时安装了Python 3.x与Python 2.x的用户可能需要输入python3. 而对于Windows用户而言,如果您在PATH环境变量里正确

简明Python3教程 18.下一步是什么

如果你有认真通读本书之前的内容并且实践其中包含的大量例程,那么你现在一定可以熟练使用python了. 同时你可能也编写了一些程序用于验证python特性并提高你的python技能.如果还没有这样做的话,你应该去试试. 现在的问题是接下来应该做什么? 我建议你先解决下面的问题: 创建你自己的命令行版本的通讯录程序,利用它你可以浏览修改删除或搜索诸如朋友,家人,同事等联系人和 他们的email地址/或电话号码等信息.这些信息必须存起来以便需要时提取. 思考下我们已经学到的各种知识,这个问题其实相当简

简明Python3教程 9.函数

简介 函数是程序的可复用片段,允许你为语句块赋予名字之后在程序的任何地方运行它们任意次,这称做函数调用. 我们已经使用过一些内建函数,例如len和range等. 函数也许是任何有意义的软件中最重要的构件,所以我们将在本章探究函数的方方面面. 函数以关键字def定义,其后紧跟函数名,由一对小括号闭合的形参,最后以冒号结束定义行, 定义行下面的是函数体,它是一个语句块. 听着有点复杂,其实定义起来是很简单的,见下面的例子: 范例: #!/usr/bin/python # Filename: func