Python入门(六):标准库详解编程语言

 

操作系统接口

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
  • functools 学好python有必要掌握上面这两个库吧,
  • re 正则
  • subprocess 调用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

 

原创文章,作者:Maggie-Hunter,如若转载,请注明出处:https://blog.ytso.com/11594.html

(0)
上一篇 2021年7月19日
下一篇 2021年7月19日

相关推荐

发表回复

登录后才能评论