【Python】Python系列教程-- Python3 标准库概览(三十)

news/2024/11/23 0:17:00/

文章目录

  • 前言
  • 操作系统接口
  • 文件通配符
  • 命令行参数
  • 字符串正则匹配
  • 数学
  • 访问互联网
  • 日期和时间
  • 数据压缩
  • 性能度量
  • 测试模块

前言

往期回顾:

  • Python系列教程–Python3介绍(一)
  • Python系列教程–Python3 环境搭建(二)
  • Python系列教程–Python3 VScode(三)
  • Python系列教程–Python3 基础语法(四)
  • Python系列教程–Python3 基本数据类型(五)
  • Python系列教程-- Python3 数据类型转换(六)
  • Python系列教程-- Python3 推导式(七)
  • Python系列教程-- Python3 解释器和注解(八)
  • Python系列教程-- Python3 什么是运算符(九)
  • Python系列教程-- Python3 数字(Number)(十)
  • Python系列教程-- Python3 字符串(十一)
  • Python系列教程-- Python3 列表(十二)
  • Python系列教程-- Python3 元组(十三)
  • Python系列教程-- Python3 字典(十四)
  • Python系列教程-- Python3 集合(十五)
  • Python系列教程-- Python3 条件控制(十六)
  • Python系列教程-- Python3 循环语句(十七)
  • Python系列教程-- Python3 编程第一步(十八)
  • Python系列教程-- Python3 推导式(十九)
  • Python系列教程-- Python3 迭代器与生成器(二十)
  • Python系列教程-- Python3 函数(二十一)
  • Python系列教程-- Python3 数据结构(二十二)
  • Python系列教程-- Python3 模块(二十三)
  • Python系列教程-- Python3 输入和输出(二十四)
  • Python系列教程-- Python3 File(文件) 方法(二十五)
  • Python系列教程-- Python3 OS 文件/目录方法(二十六)
  • Python系列教程-- Python3 错误和异常(二十七)
  • Python系列教程-- Python3 面向对象(二十八)
  • Python系列教程-- Python3 命名空间和作用域(二十九)

Python 标准库非常庞大,所提供的组件涉及范围十分广泛,使用标准库我们可以让您轻松地完成各种任务。

以下是一些 Python3 标准库中的模块:

  • os 模块:os 模块提供了许多与操作系统交互的函数,例如创建、移动和删除文件和目录,以及访问环境变量等。

  • sys 模块:sys 模块提供了与 Python 解释器和系统相关的功能,例如解释器的版本和路径,以及与 stdin、stdout 和 stderr 相关的信息。

  • time 模块:time 模块提供了处理时间的函数,例如获取当前时间、格式化日期和时间、计时等。

  • datetime 模块:datetime 模块提供了更高级的日期和时间处理函数,例如处理时区、计算时间差、计算日期差等。

  • random 模块:random 模块提供了生成随机数的函数,例如生成随机整数、浮点数、序列等。

  • math 模块:math 模块提供了数学函数,例如三角函数、对数函数、指数函数、常数等。

  • re 模块:re 模块提供了正则表达式处理函数,可以用于文本搜索、替换、分割等。

  • json 模块:json 模块提供了 JSON 编码和解码函数,可以将 Python 对象转换为 JSON 格式,并从 JSON 格式中解析出 Python 对象。

  • urllib 模块:urllib 模块提供了访问网页和处理 URL 的功能,包括下载文件、发送 POST 请求、处理 cookies 等。

操作系统接口

os模块提供了不少与操作系统相关联的函数。

>>> import os
>>> os.getcwd()      # 返回当前的工作目录
'C:\\Python34'
>>> os.chdir('/server/accesslogs')   # 修改当前的工作目录
>>> os.system('mkdir today')   # 执行系统命令 mkdir 
0

建议使用 “import os” 风格而非 “from os import *”。这样可以保证随操作系统不同而有所变化的 os.open() 不会覆盖内置函数 open()。

在使用 os 这样的大型模块时内置的 dir() 和 help() 函数非常有用:

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

针对日常的文件和目录管理任务,:mod:shutil 模块提供了一个易于使用的高级接口:

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

文件通配符

glob模块提供了一个函数用于从目录通配符搜索中生成文件列表:

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

命令行参数

通用工具脚本经常调用命令行参数。这些命令行参数以链表形式存储于 sys 模块的 argv 变量。例如在命令行中执行 “python demo.py one two three” 后可以得到以下输出结果:

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

错误输出重定向和程序终止
sys 还有 stdin,stdout 和 stderr 属性,即使在 stdout 被重定向时,后者也可以用于显示警告和错误信息。

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

大多脚本的定向终止都使用 “sys.exit()”。

字符串正则匹配

re模块为高级字符串处理提供了正则表达式工具。对于复杂的匹配和处理,正则表达式提供了简洁、优化的解决方案:

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

如果只需要简单的功能,应该首先考虑字符串方法,因为它们非常简单,易于阅读和调试:

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

数学

math模块为浮点运算提供了对底层C函数库的访问:

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

random提供了生成随机数的工具。

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

访问互联网

有几个模块用于访问互联网以及处理网络通信协议。其中最简单的两个是用于处理从 urls 接收的数据的 urllib.request 以及用于发送电子邮件的 smtplib:

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

注意第二个例子需要本地有一个在运行的邮件服务器。

日期和时间

datetime模块为日期和时间处理同时提供了简单和复杂的方法。

支持日期和时间算法的同时,实现的重点放在更有效的处理和格式化输出。

该模块还支持时区处理:

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

数据压缩

以下模块直接支持通用的数据打包和压缩格式:zlib,gzip,bz2,zipfile,以及 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

性能度量

有些用户对了解解决同一问题的不同方法之间的性能差异很感兴趣。Python 提供了一个度量工具,为这些问题提供了直接答案。

例如,使用元组封装和拆封来交换元素看起来要比使用传统的方法要诱人的多,timeit 证明了现代的方法更快一些。

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

相对于 timeit 的细粒度,:mod:profile 和 pstats 模块提供了针对更大代码块的时间度量工具。

测试模块

开发高质量软件的方法之一是为每一个函数开发测试代码,并且在开发过程中经常进行测试

doctest模块提供了一个工具,扫描模块并根据程序中内嵌的文档字符串执行测试。

测试构造如同简单的将它的输出结果剪切并粘贴到文档字符串中。

通过用户提供的例子,它强化了文档,允许 doctest 模块确认代码的结果是否与文档一致:

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()   # 自动验证嵌入测试

unittest模块不像 doctest模块那么容易使用,不过它可以在一个独立的文件里提供一个更全面的测试集:

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

以上我们看到的只是 Python3 标准库中的一部分模块,还有很多其他模块可以在官方文档中查看完整的标准库文档:https://docs.python.org/zh-cn/3/library/index.html


http://www.ppmy.cn/news/274926.html

相关文章

适合平板用的Android版本,安卓平板专享 推荐五款Pad版应用浏览器

平板市场&#xff0c;硝烟四起&#xff0c;各品牌展开混战&#xff0c;杀得是你死我活&#xff0c;都想要自己分到手的蛋糕多一点。同样的&#xff0c;网络浏览器市场也竞争激烈&#xff0c;各软件商争相抢出Pad版或HD版浏览器&#xff0c;让用户的选择多了起来。今天&#xff…

平板电脑推荐 资深游戏玩家最爱的这款5G平板来了!

一说到打游戏&#xff0c;对于喜欢通过玩游戏放松心情或者是用游戏来获取更刺激的娱乐体验的资深游戏玩家来说&#xff0c;如果网络运行不畅通有卡顿、画质不清晰到人物一运动就出现像素点&#xff0c;就会产生极大的难受感&#xff0c;一股郁闷之气油然而生。笔者玩游戏就没有…

android 平板桌面,RUI平板桌面

RUI平板桌面是一款非常实用的智能分类管理桌面手机软件&#xff0c;拥有多套主题&#xff0c;随心而换&#xff0c;各种实用小插件让操作变得异常容易&#xff0c;让分类、管理、下载程序在桌面上一步到位。 软件特色&#xff1a; 1.分类管理应用&#xff0c;应用自动智能分类&…

android平板值得买吗,最值得买大推荐 全新安卓平板你选谁?

原标题&#xff1a;最值得买大推荐 全新安卓平板你选谁&#xff1f; 【IT168 导购】现如今市售安卓平板电脑日益增多&#xff0c;国产产品也全面崛起&#xff0c;不仅在外观设计上更为时尚&#xff0c;同时在硬件配置上也更为主流。本文将为大家推荐几款市售高人气国产全新安卓…

有奖征文 | 夙兴夜寐,铸梦网安

出品&#xff5c;MS08067实验室&#xff08;www.ms08067.com&#xff09; 本文作者&#xff1a;潜龙勿用 01 时光荏苒&#xff0c;流年岁月如白驹过隙&#xff0c;不停飞逝于眼前&#xff0c;在这车马星驰的人间&#xff0c;踏入网络安全领域已然三年有余。我也终于从一开始的不…

JS 箭头函数

ES6箭头函数是一种新定义的函数类型&#xff0c;它可以更容易地编写简洁、可读性强且易于维护的代码。在本文中&#xff0c;我们将探讨ES6箭头函数的定义、特性以及箭头函数的简写。 1. 箭头函数的定义 ES6箭头函数是一种匿名函数&#xff0c;使用“>”符号定义。与常规函…

FPGA认识-LCMXO3LF-9400C-5BG400C 什么是低功耗FPGA

莱迪思深力科超低密度FPGA 是最新的立即启用、非挥发性、小型覆盖区 FPGA&#xff0c;采用先进的封装技术&#xff0c;能让每个元件达到最低成本。此系列采用最新的小型封装&#xff0c;不仅具有低功率、成本优势并结合快速效能。FPGA 现场可编程逻辑器件,小尺寸&#xff0c;高…

rabbitmq死信队列详解(亲手实践)

目录 1 概念 2 成为死信队列的条件 2.1 队列指定长度 2.2 消息ttl时间 2.3 消费者拒收消息 1 概念 死信队列&#xff1a;死信队列其实和普通的队列一样&#xff0c;只不过里面存放的消息都是普通队列过期没有消费的。所以&#xff0c;接收没有及时被消费消息的队列为死信…