Python标准库通常被称为“自带的电池”,自然地提供了广泛的功能,涵盖了大概200个左右的包与模块。不断有高质量的包或模块被开发出来,极大的丰富了标准库。但有些模块放在标准库中很难去维护,比如“Berkeley DB”模块,其被清理出标准库进行单独维护。还有一些库,比如PyParsing(创建分析器)也是没有被加在标准库中。
1 字符串处理
1.1 String模块
常量:string.ascii_letters、 string.hexdigits。
string.Formatter子类,自定义字符串格式化器。textwrap模块可用于捕获指定宽度的文本行,并最小化缩排的需求。
1.2 Struct模块
提供了一些函数,将数字布尔型变量以及字符串打包为字节对象(以其二进制表示),或从字节对象中拆分为适当的类型,用于跟C语言底层的交互。
1.3 difflib模块
提供了用于对比序列(比如字符串)进行比较的类与方法,并可以产生以标准的“diff”格式与HTML格式输出信息。
1.4 re正则表达式
最强大的字符串处理模块
2 io.StringIO类
python提供两种将文本写入到文件的方法,一种是使用open,write方法,一种是print()函数,并将其关键字参数file设置为打开并等待写入的文件对象。比如:
print("An error message", file = sys.stdout) sys.stdout.write("Another error message\n")
以上两行文本都将被打印输出到sys.stdout中,这是一个文件对象,表示“标准输出流”
如果使用了sys.stdout = io.StringIO,那么输入到sys.stdout中的文件都将会发送给io.StringIO。可通过io.StringIO.getvalue()函数来获取值。
3 命令行程序设计
fileinput.input()对控制台中重定向的所有行进行迭代。fileinput.filename()与fileinput.lineno(),该模块可在任意时刻报告当前文件名与行号。
处理命令行选项模块:optparse和getopt
import optparse def main(): parser = optparse.OptionParser() parser.add_option("-w","--maxwidth",dest = "maxwidth",type = ‘int‘,help = ("the maximum number of characters that can be""output to string fields[default:%default]")) parser.add_option("-f","--format",dest = ‘format‘,help = "the format used for outputting numbers""[default:%default]") parser.set_defaults(maxwidth = 100,format = ".0f")#设置初始值 opts,args = parser.parse_args()
4 数学与数字
内置:int,float,complex
数值型标准库:decimal.Decimal,fraction.Fraction
标准的数学函数:math
复数数学函数:cmath
随机数:random
5 时间和日期
calendar和datetime
6 算法与组合数据类型
bisect 搜索有序序列
heapq将序列转换为堆
import heapq heap = [] heapq.heappush(heap, (5, "rest")) heapq.heapify()#将列表转换为堆,可以自动完成必要的重新排序 heapq.heappop()#从堆中移除最小项 heapq.merge()#任意数量的排序后的迭代作为参数返回一个迭代子。
collection包提供了collectio.defaultdict和collection.named- tuple, collection.UserList, collection.UserDict.Collection.deque(跟list作用相同但是list只在列表结尾添加或删除有很快的速度,collection在开始和结尾都有很快的速度。)
collection.OrderDict和collection.Counter(提供一个保持各种技术的便捷且快速的方法。以二元组(元素,个数)返回唯一元素或最常见元素的列表。
array提供了序列类型:array.array(与列表的区别是:对象类型是固定的)
weakref:弱引用功能。(与通常引用的区别在于如果对某个对象仅有弱引用,那么该对象仍然可以被调度进入垃圾收集,用于防止仅因为对其引用而存在内存里。
7 文件,目录与进程处理
Shutil模块提供了用于文件与目录处理的高层函数,用于包括复制文件与整个目录的shutil.copy()和shutil.copytree()函数,移动目录树的shutil.move()移动整个目录树的shutil.rmtree()函数
临时文件的创建应该使用tempfile模块,tempfile.mkstemp()创建临时对象。
filecmp用于文件的比较filecmp.cmp(),整个目录的比较filecmp.cmpfiles()
Processing 和MultiProcessing
os模块:os.environ环境变量名和值。os.getcwd可获取程序工作目录。os.chdir修改工作目录。os.access确定某个文件是否存在或可读写。os.listdir()给定目录中的条目列表os.stat()返回文件与目录的各种信息项(模式,访问时间,大小)os.mkdir()创建目录 os.make-dirs()创建中间目录。os.rmdir()移除空目录os.rename()重命名os.walk()整个目录树上迭代,依次取回每个文件与目录的名称os.path.abspath()返回绝对路径os.path.split()返回二元组,第一项包含路径第二项则是文件名(os.path.basename()与os.path.dirname())文件名也可分为两部分(名称和扩展名)os.splitext()。os.path.join()接受任意数量的路径字符串,并使用特定分隔符返回。