上班的时候偷懒,把Python帮助里的标准功能库1过了一遍,顺便翻译了一下,虽然我知道基本没有人看,但不是说21世纪编程能力是基本的生存力嘛。

通过阅读本文,你将了解Python的11个标准功能库1.操作系统接口库

2.文件通配符

3.命令行参数

4.错误输入重定向及终止程序

5.字符匹配

6.数学库

7.互联网访问

8.日期与时间

9.数据压缩

10.性能评价

11.质量控制

1.操作系统接口库

OS操作系统模块提供了一系列的与操作系统的交互。要尽可能确保使用Import os方式而不是from os import *. 这将使得保持os.open()映射自不同操作的内建的open()函数。内建的dir()和help()函数是在os大模块中非常有用的辅助手段。>>>import os

>>>os.getcwd()  #返回当前工作路径

>>>os.chdir('/abc/abc') #改变当前的工作路径

>>>os.system('mkdir today') #在系统命令行运行mkdir

>>>dir(os) #返回所有的功能模块列表

>>>help(os) #返回创建自模块文档的手册

对于日常的文件与目录管理,更容易使用的shutil模块能够提供更高层次的接口。>>>import shutil

>>>shutil.copyfile(src,

dst, *, follow_symlinks=True)  #复制文件

>>>shutil.move(src, dst,

copy_function=copy2) #移动文件或目录

2.文件通配符

glob模块提供了一个通过使用通配符搜索目录并生成文件清单的功能>>>import glob

>>>glob.glob('*.py') #返回后缀是py的所有文件列表

3.命令行参数

一般的脚本工具都需要处理命令行参数。这些参数都以列表的形式存放在sys模块的argv属性中。下面的例子是在命令行运行python demo.py one two three的输出结果:>>>import sys

>>>print(sys.argv)

['demo.py','one','two','three']

getopt模块会根据协议,通过使用Unix的getopt()函数来处理sys.argv。argparse提供了更强大和更有弹性的处理命令行程序。

4.错误输入重定向及终止程序

sys模块还具有stdin,stdout和stderr属性,其中stderr主要用于弹出警告与错误信息,并使它们可视化,就算当stdout已经被重定向了。>>>sys.stderr.write('Warning message')

最常用的结束脚本运行的命令是sys.exit()

5.字符匹配

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'

6.数学库

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)   # 100以内的10个随机数样本

[30, 83, 16, 4, 8, 81, 41, 50, 18, 33]

>>> random.random()    # 随机浮点数

0.17970987693706186

>>> random.randrange(6)    # 6以内的随机整数

4

statistics模块提供了基础的数值统计功能(平均数、中间数、偏差等)>>> import statistics

>>> data = [2.75, 1.75, 1.25, 0.25, 0.5, 1.25, 3.5]

>>> statistics.mean(data)

1.6071428571428572

>>> statistics.median(data)

1.25

>>> statistics.variance(data)

1.3720238095238095

在SciPy项目中有许多做其它数值运算的模块。

7.互联网访问

有许多模块能够提供了访问互联网和处理网络协议,有两个最简单的,urllib.request是从URLs来接收数据,smtplib用于发送邮件(需要邮件服务器的支持)>>> from urllib.request import urlopen

>>> with urlopen('http://tycho.usno.navy.mil/cgi-bin/timer.pl') as response:

...     for line in response:

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

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

8.日期与时间

datetime模块提供了多种处理日期与时间的类,支持日期与时间的数值运算,主要加强了数值运算效率与输出格式的处理。这个模块也支持时区对象。>>> # 简单的日期建立与格式化

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

>>> # 支持日历运算的日期

>>> birthday = date(1964, 7, 31)

>>> age = now - birthday

>>> age.days

14368

9.数据压缩

常见的数据归档与压缩支持模块:zlib,gzip,bz2,lzma,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

10.性能评价

有些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的精细层面,profile和pstats模块提供了工具来识别大块代码的时间消耗。

11.质量控制

一个开发高质量软件的方法是对每个功能写出测试案例,并在开发时经常运行测试。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 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)

with self.assertRaises(ZeroDivisionError):

average([])

with self.assertRaises(TypeError):

average(20, 30, 70)

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

python英译汉库模块_翻译|Python标准功能库1相关推荐

  1. java设计单词英译汉小助手_单词小助手C语言版

    单词小助手,要求完成以下任务: 1.改写程序为良好程序风格(文档注释,函数注释,语句注释). 2.将单词测试中的功能完善,可针对做错的单词重复记忆. 3.查询单词的功能添加英文词查询,中文查询的功能完 ...

  2. 一个完整的python文件即是一个模块_用python玩转数据|基本语法

    比较运算符 >>>3<4<7 True >>>3<4<1 False >>> 打开文件 >>> f=op ...

  3. python中怎样使用re模块_[转]Python中RE模块的应用

    Python 自1.5版本起增加了re 模块,它提供 Perl 风格的正则表达式模式.Python 1.5之前版本则是通过 regex 模块提供 Emecs 风格的模式.Emacs 风格模式可读性稍差 ...

  4. python哪个关键字可以导入模块_关于python导入模块import与常见的模块详解

    0.什么是python模块?干什么的用的? Java中如果使用abs()函数,则需要需要导入Math包,同样python也是封装的,因为python提供的函数太多,所以根据函数的功能将其封装在不同的m ...

  5. c调用python代码找不到模块_构建 Python C 扩展模块

    有好几种扩展 Python 的功能的方法.其中一种就是用 C 或 C++ 编写 Python 模块.通过这个过程可以提高性能,更好地访问 C 库函数和系统调用.在本教程中,我将带大家了解如何使用 Py ...

  6. 一个完整的python文件即是一个模块_用Python玩转数据:python的函数、模块和包

    标签: Python函数 函数可以看成类似于数学中的函数,完成一个特定功能的一段代码. -绝对值函数 abs() -类型函数 type() -四舍五入函数 round() Python中有很多内建函数 ...

  7. python如何查看有什么模块_在python中如何查看模块功能

    在python中查看模块功能的方法:1.在python命令行输入help()函数进入help帮助文档界面:2.键入[modules]列出当前所有安装的模块:3.键入相应的模块名称即可得到该模块的功能信 ...

  8. python调用jar包的模块_使用 Python 的 JPype 模块调用 Jar 包

    背景与需求 最近学习并安装使用了HttpRunner框架去尝试做接口测试,并有后续在公司推广的打算. HttpRunner由Python开发,调用接口时需要依赖Python:而大多数公司的扩展工具包使 ...

  9. python英译汉库模块_Python 进阶之路-翻译模块

    Python 进阶之路-翻译模块 作者:nango  阅读:1749次  来源:原创  时间:2017-07-14 17:09 Git 地址 [python 翻译模块](https://github. ...

最新文章

  1. 即插即用 | S-FPN全新的金字塔网络,更适合轻量化模型的FPN
  2. Three.js中显示坐标轴、平面、球体、四方体
  3. 彻底解决跨浏览器下PHP下载文件名中的中文乱码问题
  4. NAU8810相关问题
  5. leetcode1177. 构建回文串检测(前缀和)
  6. eja智能压力变送器工作原理_压力变送器的原理、接线和安装方法
  7. bzoj 1611: [Usaco2008 Feb]Meteor Shower流星雨(DP)
  8. 7.企业安全建设入门(基于开源软件打造企业网络安全) --- 蜜罐与攻击欺骗
  9. 拓端tecdat|R语言中小样本违反异方差性的线性回归
  10. 现在动手,建立你的灾备系统
  11. mousewheel事件
  12. html中如何设置动画效果,css3如何设置动画?
  13. VUE+ECharts 制作饼图
  14. 使用IO完善快递管理系统
  15. 使用浏览器抓包获取API
  16. 解决maven项目中-Dmaven.multiModuleProjectDirectory报错问题
  17. 模拟退火算法系列之(二):一个实例
  18. springMVC+mysql实现的Java web医院分诊挂号管理系统源码附带论文及视频指导运行教程
  19. Java项目:SSM医院分诊管理系统
  20. 回望2022,展望2023

热门文章

  1. 爬虫尝试抓取动态网页
  2. C/C++内存分区详解
  3. C#中toolStrip或statusStrip遮挡了SplitContainer怎么办?
  4. 《C++入门经典(第5版•修订版)》——2.7 作业
  5. TensorFlow实现seq2seq
  6. WebOS设置谷歌同步帐号
  7. 类和对象的高级设置-西安达内培训
  8. (Latent Space)理解机器学习中的潜在空间
  9. ubuntu下如何使用minicom传送文件
  10. 【观察】华为:持续创新,场景聚焦,推动数据中心实现可持续发展