目录
一、模块
1.概念
每个拓展名为.py的Python程序都是一个独立的模块
2.作用
模块能定义函数、类和变量,让你能够有逻辑的组织你的python代码段
3.组织模块
包(package)是放在一个文件夹里的模块集合
4.模块引用方式
import <模块>[as<别名>]
将模块中的函数等名称导入当前程序
在调用模块中的函数的时候,需要加上模块的命名空间
可以给导入的命名空间替换一个新的名字
引用方式:<模块>.<名称>
from <模块> import <函数>
引用模块中的某个函数
调用时不需要再加上命名空间
二、Python语言标准库
1.标准库
在安装python时就默认已经安装好的模块
python具有功能强大的标准库
注:以下模块不需要死记硬背,注重练习即可
2.数字与数学模块
3.数据类型模块
4. 功能编程模块
5.数据持久化模块
6.数据压缩与存档模块
7.文件格式模块
8. 文件与目录访问模块
9. 通用操作系统服务
10.并发执行模块
11.加密服务模块
12. 网络与进程间通信模块
13.互联网数据处理模块
14.互联网协议与支持
15.多媒体服务模块
16. 结构化标记处理工具
17.程序框架模块
18.图形用户界面
三、扩展命名空间
1.命名空间
表示标识符的可见范围
一个标识符可以在多个命名空间中定义,在不同命名空间中的含义互不相干
dir(<名称>)函数:列出名称的属性
help(<名称>)函数:显示参考手册
四、datetime模块
1.主要的类
可对date、time、datetime三种时间模式进行单独管理
datetime.date() 处理日期(年月日)
datetime.time() 处理时间(时分秒、毫秒)
datetime.datetime() 处理日期+时间
datetime.timedelta() 处理时段(时间间隔)
2.获取今天的日期
datetime.date.today()
datetime.datetime.now()
3.修改日期格式
使用strftime格式化
datetime.datetime.isoformat()
4.时间戳
概念:格林威治时间1970年01月01日00时00分00秒起至现在的总秒数
将日期转换成时间戳:
timetuple函数:将时间转换成struct_time格式
time.mktime函数:返回秒数来表示时间的浮点数
将时间转换成日期:
datetime.date.formtimestamp()
5.时间上的加减法
timedeta()方法:表示两个时间点的间隔
五、calendar模块
1.概念
跟日历相关的若干函数和类,可以生成文本形式的日历
2.常用函数
3. 制作日历
a.一个月
b.一年
4.日历列表化
calendar.monthcalendar()
返回某一年的某一个月份日历,是一个嵌套列表
最里层的列表含有七个元素,代表一周(从周一到周日)
如果没有本月的日期则为0
5.与日历相关的计算
a.闰年判断:
普通闰年:被4整除但不被100整除
世纪闰年:被400整除
calendar.isleap(<年>)
b.计算某月有几天,从周几开始
calendar.monthrange()
注意:从0开始对应周一
c.计算某天为周几
calendar.weekday()
注意:从0开始对应周一
六、time模块
1.获取时间戳
time.time()
2.获取当前时间
time.asctime()
time.ctime()
out:'Mon Aug 13 16:01:27 2018'
3.将元组数据转化成日期
4. 利用索引获取时间信息
struct_time类
time.localtime()
获取:
5.让程序睡一会
time. sleep()
七、算数模块
1.math模块
整数模块
2.cmath模块
复数模块
3.decimal模块
浮点数模块
浮点数计算会有误差,使用该模块可以固定精度
生成小数:
小数计算:
4.fractions模块
分数模块
生成分数
浮点数表示为分数(会有误差)
5.random模块
随机数模块
八、持久化模块(shelve)
1.临时性对象
类创建的对象并不是真正的数据库记录
村塾在内存而不是文件中
关闭Python,实例将消失
2.对象持久化
使对象在创建他们的程序推出之后依然存在
3.相关的标准库模块
pickle:任意Python对象格式化和解格式化
dbm:实现一个可通过键访问的文件系统,以存储字符串
shelve:按照键把pickle处理后的对象存储到文件中
4.构造数据库
shelve模块:
提供基本的存储操作,通过构造一个简单的数据库,像操作字典一样按照键存储和获取本地的python对象,使其可以跨程序运行而保持持久化
键:必须是字符串,且唯一的
值:任何类型的Python对象
与字典类型的区别:
一开始必须打开shelve,并且在修改后需要关闭它
数据处理:
不支持类似SQL的查询工具
但只要通过键获取到保存在文件的对象,就可以像正常的数据对象一样处理
5.操作
将任意数据对象保存到文件中去:
d = shelve.open(filename)
类似字典形式访问,可读可写:
d[key] = data
value = d[key]
del d[key]
关闭:
d.close()
九、文本文件读写
1. 文件的打开
普通文件:
数据持久化的最简单类型
仅仅是在一个文件名下的字节流,把数据从文件读入内存,从内存写入文件
open()函数:
f = open(filename[,mode[,buffering]])
2. 文件的读写和访问
写:
f.write(str)
f.writelines(stelist):写入字符串列表
读:
f.read()
f.readline():返回一行
f.readlines():返回所有行、列表
3.文件的关闭
关闭的作用是终止对外部文件的连接,同时将缓存区的数据刷新到硬盘上
调用close():
f.close()
使用上下文管理器(context manager):
可以确保在退出后自动关闭文件
with open('textfile','rt') as myfile:
myfile.read( )
4.结构化文本文件:CSV
纯文本文件,以“,”为分隔符
值没有类型,所有值都是字符串
不能指定字体颜色等样式
不能指定单元格的宽高,不能合并单元格
没有多个工作表
不能嵌入图像图表
读:
re = csv.reader():接受一个可迭代对象,能返回一个生成器,可从中解析出内容
re = csv.DictReader():返回的每一个单元格都放在一个元组的值内
写:
w = csv.writer()
w.witerow(rows)
当文件不存在时,自动生成
支持单行写入和多行写入
字典数据写入:
w = csv.DictWriter()
w.witeheader()
w.writerow(rows)
5.结构化文本文件:Excel
openpyxl模块
用来读写扩展名为xlsx/xlsm/xltx/xltm的文件
Workbook类是对工作薄的抽象
Worksheet类是对表格的抽象
Cell类是对单元格的抽象文件写操作
操作前要先导入第三方库:
安装 :pip install openpyxl
导库 :from openpyxl import workbook
创建Excel文件
读取Excel文件
获取单元格信息:
6.结构化文本文件:PDF
库:PyPDF2
读取:
页面:
写:
合并:
单页面操作:
十、上机练习
第一个:算法计时
import time
for i in range(1,100):
t1=time.time()
print(i)
sum = 0
a =i
while a != 0:
b = 1
for i in range(1, a + 1):
b *= i
sum += b
a -= 1
t2=time.time()
print(sum,t2-t1)
第二个: 文本文件写入
a=open('A.txt','w')
a.writelines("Persistence.\nPerseverance is the key to success.\nIt unlocks doors and breaks through glass.\nIt's the force that never says die.\nIt's the light that shines in the night.")
a.close()
第三个:文本文件读取
import random
a=open('A.txt','r')
b=a.read()
words=b.split()
print(len(words))
for i in range(10):
print(random.choice(words))
print(random.sample(words,10))
a.close()