操作系统接口
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])
#以下为匹配所用函数
#!/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模块提供了一个工具,扫描模块并根据程序中内嵌的文档字符串执行测试。
以下是收集常用的库类:
- 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:
- paramiko https://github.com/paramiko/paramiko ssh python 库
- selenium https://pypi.python.org/pypi/selenium 浏览器自动化测试工具selenium的python 接口
- lxml http://lxml.de/ python 解析html,xml 的神器
- mechanize https://pypi.python.org/pypi/mechanize/ Stateful programmatic web browsing
- pycurl https://pypi.python.org/pypi/pycurl cURL library module for Python
- Fabric http://docs.fabfile.org/en/1.8/ Fabric is a Python (2.5 or higher) library and command-line tool for streamlining the use of SSH for application deployment or systems administration tasks.
- xmltodict https://github.com/martinblech/xmltodict xml 转 dict,真心好用
- urllib3 和 requests: 当然其实requests就够了 Requests: HTTP for Humans
- flask http://flask.pocoo.org/python web 微框架
- ipdb 调试神器,同时推荐ipython!结合ipython使用
- redis redis python接口
- pymongo mongodbpython接口
- PIL http://www.pythonware.com/products/pil/ python图像处理
- mako http://www.makotemplates.org/ python模版引擎
- numpy , scipy 科学计算
- matplotlib 画图
- scrapy 爬虫
- django/tornado/web.py/web2py/uliweb/flask/twisted/bottle/cherrypy.等等 python web框架/服务器
- sh 1.08 — sh v1.08 documentation 用来运行shell 模块的 极佳选择
来源:https://www.zhihu.com/question/20501628/answer/19542741
原创文章,作者:Maggie-Hunter,如若转载,请注明出处:https://blog.ytso.com/11594.html