python学习笔记-模块

pickle 模块

pickle模块实现了基本的数据序列和反序列化。
通过pickle模块的序列化操作我们能够将程序中运行的对象信息保存到文件中去,永久存储。
通过pickle模块的反序列化操作,我们能够从文件中创建上一次程序保存的对象。
基本接口:pickle.dump(obj, file, [,protocol])
读取方式打开文件:x = pickle.load(file)

import pickle

pkl_file = open('data.pkl', 'rb')
data1 = pickle.load(pkl_file) #使用pickle模块从文件中重构python对象
pprint.pprint(data1)

os操作系统接口

import os
os.getcwd()      # 返回当前的工作目录
os.chdir('/server/accesslogs')   # 修改当前的工作目录
os.system('mkdir today')   # 执行系统命令 mkdir 
dir(os)
help(os)
#针对日常的文件和目录管理任务,shutil 模块提供了一个易于使用的高级接口:
import shutil
shutil.copyfile('data.db', 'archive.db')
shutil.move('/build/executables', 'installdir')

glob文件通配符

#glob模块提供了一个函数用于从目录通配符搜索中生成文件列表
import glob
glob.glob('*.py') 

sys

通用工具脚本经常调用命令行参数。这些命令行参数以链表形式存储于 sys 模块的 argv 变量。

import sys
print(sys.argv)

re

re模块为高级字符串处理提供了正则表达式工具。
re.match函数:从字符串的起始位置匹配一个模式,起始位置匹配成功的话,match()就返回none
re.search方法:扫描整个字符串并返回第一个成功的匹配
re.sub:替换字符串中的匹配项
re.compile:编译正则表达式,生成一个正则表达式( Pattern )对象,供 match() 和 search() 这两个函数使用。
findall(string[, pos[, endpos]]):查找所以匹配项,返回一个列表。字符串:匹配长度
re.finditer:匹配的所有子串,并返回一个迭代器。
re.split:按照能够匹配的子串将字符串分割后返回列表

In [2]: import re

In [3]: re.findall(r'\bf[a-z]*', 'which foot or hand fell fastest')
Out[3]: ['foot', 'fell', 'fastest']

In [47]: print(re.match('www', 'www.runoob.com'))
<re.Match object; span=(0, 3), match='www'>

In [48]: print(re.match('com', 'www.runoob.com'))
None
>>>import re
>>> pattern = re.compile(r'([a-z]+) ([a-z]+)', re.I)   # re.I 表示忽略大小写
>>> m = pattern.match('Hello World Wide Web')
>>> print m                               # 匹配成功,返回一个 Match 对象
<_sre.SRE_Match object at 0x10bea83e8>
>>> m.group(0)                            # 返回匹配成功的整个子串
'Hello World'
>>> m.span(0)                             # 返回匹配成功的整个子串的索引
(0, 11)
>>> m.group(1)                            # 返回第一个分组匹配成功的子串
'Hello'
>>> m.span(1)                             # 返回第一个分组匹配成功的子串的索引
(0, 5)
>>> m.group(2)                            # 返回第二个分组匹配成功的子串
'World'
>>> m.span(2)                             # 返回第二个分组匹配成功的子串
(6, 11)
>>> m.groups()                            # 等价于 (m.group(1), m.group(2), ...)
('Hello', 'World')

math

random

import random
In [7]: random.choice(['apple', 'pear', 'banana'])
Out[7]: 'banana'

In [6]: random.sample(range(100), 10)
Out[6]: [78, 62, 92, 85, 56, 29, 99, 48, 38, 69]

random.random()    # 0-1 不含1随机生成浮点数
random.randrange(6)  # 0-5范围内随机生成整数

访问 互联网

最简单的两个是用于处理从 urls 接收的数据的 urllib.request 以及用于发送电子邮件的 smtplib

datetime

# weekday() 0-6表示周一-周日
In [8]: import datetime

In [9]: now = datetime.date.today()

In [10]: now
Out[10]: datetime.date(2018, 12, 24)
In [11]: print(now)
2018-12-24
In [12]: oneday=datetime.timedelta(days=1) # print(oneday) =1 day, 0:00:00
In [13]: yesterday = now -oneday

In [14]: yesterday
Out[14]: datetime.date(2018, 12, 23)
In [20]: monday = yesterday + datetime.timedelta(-yesterday.weekday()) #周一

In [21]: monday
Out[21]: datetime.date(2018, 12, 17)
In [24]: mondaystr = monday.strftime('%Y-%m-%d') #类型改为字符串

In [25]: mondaystr
Out[25]: '2018-12-17'

In [27]: week = yesterday.strftime("%Y-%W") #本年度第几周
 
In [28]: week
Out[28]: '2018-51'

zlib数据压缩

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

In [32]: import zlib

In [33]: s = b'witch which has which witches wrist watch'

In [34]: len(s)
Out[34]: 41

In [35]:  t = zlib.compress(s)

In [36]: len(t)
Out[36]: 37

In [37]: zlib.decompress(t)
Out[37]: b'witch which has which witches wrist watch'

timeit性能度量

# 比较两种方法实现a、b值互换花费的时间
In [39]: from timeit import Timer

In [40]: Timer('t=a; a=b; b=t', 'a=1; b=2').timeit()
Out[40]: 0.030674659999931464

In [41]: Timer('a,b = b,a', 'a=1; b=2').timeit()
Out[41]: 0.026684544998715864

测试模块

doctest、unittest

日历模块

In [44]: import calendar

In [45]: print(calendar.month(2018,12))
   December 2018
Mo Tu We Th Fr Sa Su
                1  2
 3  4  5  6  7  8  9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31

猜你喜欢

转载自blog.csdn.net/weixin_43744494/article/details/85131726