操作系统接口

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

 import os
 os.getcwd()      # 返回当前的工作目录
 os.chdir('d:/')   # 修改当前的工作目录
 os.system('mkdir today')   # 执行系统命令 mkdir 

针对日常的文件和目录管理任务的shutil 模块

文件通配符

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

import glob
glob.glob('*.py')

错误输出重定向和程序终止

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

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

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

字符串正则匹配

正则表达式注解:

(1)数量词的贪婪模式与非贪婪模式

正则表达式通常用于在文本中查找匹配的字符串。Python里数量词默认是贪婪的(在少数语言里也可能是默认非贪婪),总是尝试匹配尽可能多的字符;非贪婪的则相反,总是尝试匹配尽可能少的字符。例如:正则表达式”ab*”如果用于查找”abbbc”,将找到”abbb”。而如果使用非贪婪的数量词”ab*?”,将找到”a”。

注:我们一般使用非贪婪模式来提取。

(2)反斜杠问题

与大多数编程语言相同,正则表达式里使用”\”作为转义字符,这就可能造成反斜杠困扰。假如你需要匹配文本中的字符”\”,那么使用编程语言表示的正则表达式里将需要4个反斜杠”\\\\”:前两个和后两个分别用于在编程语言里转义成反斜杠,转换成两个反斜杠后再在正则表达式里转义成一个反斜杠。

Python里的原生字符串很好地解决了这个问题,这个例子中的正则表达式可以使用r”\\”表示。同样,匹配一个数字的”\\d”可以写成r”\d”。

re模块为高级字符串处理提供了正则表达式工具,主要方法如下:

#返回pattern对象

re.compile(string[,flag])

#以下为匹配所用函数

re.match(pattern, string[, flags])   尝试从字符串的起始位置匹配一个模式,如果不是起始位置匹配成功的话,match()就返回none。
re.search(pattern, string[, flags])  扫描整个字符串并返回第一个成功的匹配。
re.split(pattern, string[, maxsplit])
re.findall(pattern, string[, flags])
re.finditer(pattern, string[, flags])
re.sub(pattern, repl, string[, count])
re.subn(pattern, repl, string[, count])
例如:
#!/usr/bin/python3
import re

line = "Cats are smarter than dogs" #
pattern = re.compile(r'(.*) are (.*?) .*',re.M|re.I)
matchObj = re.match(pattern, line)

if matchObj:
   print ("matchObj.group() : ", matchObj.group())
   print ("matchObj.group(1) : ", matchObj.group(1))
   print ("matchObj.group(2) : ", matchObj.group(2))
else:
   print ("No match!!")

  

数学

math模块为浮点运算提供了对底层C函数库的访问,random提供了生成随机数的工具。

random.random()用于生成一个0到1的随机符点数: 0 <= n < 1.0。

random.uniform()的函数原型为:random.uniform(a, b),用于生成一个指定范围内的随机符点数。

random.randint()的函数原型为:random.randint(a, b),用于生成一个指定范围内的整数。

random.randrange()的函数原型为:random.randrange([start], stop[, step]),从指定范围内,按指定基数递增的集合中获取一个随机数。

random.choice从()序列中获取一个随机元素。

random.shuffle()的函数原型为:random.shuffle(x[, random]),用于将一个列表中的元素打乱。

random.sample()的函数原型为:random.sample(sequence, k),从指定序列中随机获取指定长度的片断。sample函数不会修改原有序列。

访问 互联网

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

日期和时间

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

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

# dates are easily constructed and formatted
import datetime
from datetime import date
now = date.today()
print(now)
print(datetime.date(2003, 12, 2))
print(now.strftime("%m-%d-%y. %d %b %Y is a %A on the %d day of %B.")) 

数据压缩

以下模块直接支持通用的数据打包和压缩格式:zlib,gzip,bz2,zipfile,以及 tarfile。

性能度量

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

测试模块

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

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

以下是收集常用的库类:

standard libs:

  • itertools http://docs.python.org/2/library/itertools.html
  • functools http://docs.python.org/2/library/functools.html 学好python有必要掌握上面这两个库吧,
  • re 正则
  • subprocess http://docs.python.org/2/library/subprocess.html 调用shell命令的神器
  • pdb 调试
  • traceback 调试
  • pprint 漂亮的输出
  • logging 日志
  • threading和multiprocessing 多线程
  • urllib/urllib2/httplib http库,httplib底层一点,推荐第三方的库requests
  • os/sys 系统,环境相关
  • Queue 队列
  • pickle/cPickle 序列化工具
  • hashlib md5, sha等hash算法
  • cvs
  • json/simplejson python的json库,据so上的讨论和benchmark,simplejson的性能要高于json
  • timeit 计算代码运行的时间等等
  • cProfile python性能测量模块
  • glob 类似与listfile,可以用来查找文件
  • atexit 有一个注册函数,可用于正好在脚本退出运行前执行一些代码
  • dis python 反汇编,当对某条语句不理解原理时,可以用dis.dis 函数来查看代码对应的python 解释器指令等等。

3th libs:

来源:https://www.zhihu.com/question/20501628/answer/19542741

最新文章

  1. Activity Intent相关FLAG介绍
  2. SQL server 动态行转列
  3. Q_OBJECT
  4. asp.net identity 2.2.0 在WebForm下的角色启用和基本使用(一)
  5. 错误:Value &#39;0000-00-00 00:00:00&#39; can not be represented as java.sql.Timestamp;的解决
  6. 更轻量的 View Controllers
  7. Python的getattr()
  8. EmguCV学习——简单使用
  9. 整数划分 Integer Partition(一)
  10. [原创作品]web网页中的锚点
  11. C# 如何从List集合当中取出子集合
  12. 摸索出来的chrom调试前后台数据(Java&amp;&amp;Ajax)交互的方法分享一下咯!!!
  13. 记——加快gradle 构建速度的经验
  14. 30. pt-upgrade
  15. Unity3D编辑器扩展(四)——扩展自己的组件
  16. Cobalt Strike DNS通讯实例
  17. Array.prototype.push.apply(a,b)和Array.prototype.slice.call(arguments)
  18. HW2017笔试编程题
  19. 微信小程序开发——以简单易懂的浏览器页面栈理解小程序的页面路由
  20. pc-H5 适配方案

热门文章

  1. linux Java 手动GC 手动回收垃圾
  2. 【构建Android缓存模块】(一)吐槽与原理分析
  3. POJ2406-Power Strings(kmp循环节)
  4. Unity 开发游戏编写代码的技巧
  5. servlet 简单filter避免中文乱码等
  6. Linux日知录(常用问题笔记)
  7. php json_decode失败,返回null
  8. unity3d贴图2D
  9. 电子商务(电销)平台中订单模块(Order)数据库设计明细(转载)
  10. 自制MVC框架CRUD操作、列表、分页显示插件介绍