北大陈斌-Python语言基础与应用D9引用扩展模块下

1、时间相关:datetime模块
主要类
datetime.date() 日期(年月日)
datetime.time() 时间(时分秒、毫秒)
datetime.datetime() 处理日期+时间
datetime.timedelta() 处理时段(时间间隔)

获取当前时间
datetime.date.today()
datetime.datetime.now
修改日期格式:strftime格式化
输出国际标准时间格式:datetime.datetime.isoformat()

时间戳
日期转换成时间戳
timetuple函数:将时间转换成struct_time格式
time.mktime函数:返回用秒数来表示时间的浮点数
时间戳转换成日期
datetime.date.fromtimestamp()

时间上的加减法
两个时间点的间隔:timedelta()方法

2、时间相关:calendar模块
月份和星期计算用calendar
制作电子日历
calendar.calendar(<年>)
返回多行字符串
calendar.month(<年>,<月>)
返回多行字符串
calendar.prmonth(<年>,<月>)
相当于print(calendar.month(<年>,<月>))
calendar.prcal(<年>)
相当于print(calendar.calendar(<年>)

将日历列表化
calendar.monthcalendar()
返回某一年的某一个月份日历,是一个嵌套列表,最里层的列表含有七个元素,代表一周的,如果没有本月的日期,则为0

与日历有关的计算
判断闰年:isleap(<年>)
计算某月共有多少天:monthrange(<年>,<月>)
从周几开始,从0开始依次为周一、周二…
计算某天是周几:weekday(<年>,<月>,<日>)
返回值为0~6,依次对应的是周一

3、时间相关:time模块
获取时间戳
time.time()方法
用处:可以获取代码运行多少秒

获取日期格式
获取当前时间:time.asctime()/time.ctime()
将元组数据转化为日期:
t = (2018, 8, 13,11, 42, 31, 0, 0, 0)
time.asctime(t)
数值对应:年,月,日,时,分,秒,周几,一年中的第几天,是否为夏令时间

利用索引获取时间信息
struct_time类
time.localtime()
out:time.struct_time(tm_year=2020, tm_mon=9, tm_mday=10, tm_hour=10, tm_min=45, tm_sec=30, tm_wday=3, tm_yday=254, tm_isdst=0)
索引获取时间信息:
t = time.localtime()
year = t[0]
out:2020

sleep函数
让程序运行到某处便暂停几秒:time.sleep(秒数)

4、算术模块
math模块
math模块支持浮点数运算
cmath模块支持复数运算
cmath.polar() 极坐标
cmath.rect() 笛卡尔坐标
cmath.exp(x) e^x
cmath.log(x,a) 以a为底的x的对数

decimal模块
小数-固定精度的浮点值,当做相等判断时小心:
如:0.1+0.1+0.1-0.3=5.551115123125783e-17
生成小数:
from decimal import Decimal
Decimal(‘0.1’)
小数计算:
Decimal(‘0.1’)+Decimal(‘0.1’)+Decimal(‘0.1’)-Decimal(‘0.3’)
Decimal(‘0.0’)

fractions模块
分数-实现一个有理数对象
生成分数:
from fractions import Fraction
Fraction(1,4)/Fraction(‘0.25’)
Fraction(1, 1)
浮点数转换为分数:
Fractions.from_float(1.75)
转换后可能会有精度损失

random模块
伪随机数:计算机中的随机函数是按照一定算法模拟产生的,其结果是确定的,是可以遇见的
随机数种子:随机种子相同,随机数的序列也是相同的
random.seed(a = None)
random():生成范围在[0,1)之间的随机实数
uniform(): 生成指定范围内的随机浮点数
randint(m,n): 生成指定范围[m,n]内的整数
randrange(a,b,n),可以在[a,b)范围内,按n递增的集合中随机选择一个数
getrandbits(k),生成k位二进制的随机整数
choice(),从指定序列中随机选择一个元素
sample(),能指定每次随机元素的个数
shuffle(),可以将可变序列中所有元素随机排序

5、持久化模块
对象持久化
对象在创建程序退出后还存在
标准库模块:
任意Python对象格式化和解格式化:pickle
实现通过键访问的文件系统,以存储字节串:dbm
按照键把pickle处理后的对象存储到一个文件中:shelve

构造数据库
shelve模块:提供基本的存储操作,通过构造一个简单的数据库,像操作字典一样按照键存储和获取本地的Python对象,使其可以跨程序运行而保持持久化
键:必须是字符串,且是唯一的
值:任何类型Python对象
与字典类型区别:一开始必须打开shelve,并且修改后需要关闭它
数据处理:不支持类似SQL查询工具,但只要是通过键获取到保存在文件的对象,就可以像正常的数据对象一样处理

shelve常用操作
将任何数据对象,保存到文件中去:
d = shelve.open(filename)
open函数在调用时返回一个shelf对象,通过该对象可以存储内容
类似字典形式访问,可读可写:
d[key] = data
value = d[key]
del d[key]
操作完成后,关闭文件:
d.close()

6、文本文件读写
文件的打开
普通文件:数据持久化的最简单类型
open()函数
f = open(filename[,mode[,buffering]])
f:open()返回的文件对象
filename:文件的字符串名
mode:可选参数,打开模式和文件类型
buffering:可选参数,文件的缓冲区,默认为-1

mode第一个字母表示对其的操作:
r表示读模式
w表示写模式
x表示在文件不存在的情况下新创建并写文件
a表示在文件末尾追加写内容
+表示读写模式
mode第二个字母是文件类型:
t表示文本类型
b表示二进制文件

文件的读写和访问
文件的写操作:
f.write(str)
f.writelines(strlist):写入字符串列表

文件的读操作:
f.read()
f.readline():返回一行
f.readlines():返回所有行、列表
在这里插入图片描述
文件的关闭
f.close()
使用上下文管理(context manager):确保在退出后自动关闭文件
with open(‘textfile’,‘rt’) as myfile:
myfile.read()

结构化文本文件:csv
csv文件:纯文本文件,以“,”为分隔符,值没有类型,所有值都是字符串,不能指定字体颜色等;不能指定单元格宽高,不能合并单元格;没有多个工作表;不能嵌入图像图表
c:,
s:分隔
v:值

文本读取-read
re = csv.reader()
接受一个可迭代对象(csv文件),能返回一个生成器,可以从其中解析出内容
文件读取-DictReader(用于带有表头的文件)
re = csv.DictReader()
与reader类似,但返回的每一个单元格都放在一个元组的值内

文件写操作
w = csv.writer()
w.writerow(rows)
当文件不存在时,自动生成
支持单行写入和多行写入
字典数据写入
w = csv.DictWriter()
w.writeheader()写表头
w.writerow(rows)

结构化文本文件:Excel
openpyxl模块
用来读写扩展名为xlsx/xlsm/xltx/xltm的文件
workbook类是对工作簿的抽象
worksheet类是对表格的抽象
cell类是对单元格的抽象文件写操作

操作之前先导入第三方库
安装:pip install openpyxl
导库:from openpyxl import workbook

创建Excel文件
一个Workbook对象代表一个Excel文档,使用该方法创建一个Worksheet对象后才能打开一个表
from openpyxl import Workbook
wb = Workbook()
ws = wb.active
读取Excel文件
from openpyxl import load_workbook
wb = load_workbook(filename)
ws = wb.file.active
获取单元格信息
获取cell对象
c = wb[‘sheet’][‘A1’]
c = wb[‘sheet’].cell(row=1,column=1)
c.coordinate:返回单元格坐标
c.value:返回单元格的值
c.row:返回单元格所在的行坐标
c.column:返回单元格所在列坐标

结构化文本文件:PDF
处理PDF文件的库-PyPDF2:包含pdfFileReader、pdfFileMerger、PageObject、pdfFileWriter类,读写、分隔合并,文件转换
读取PDF文件:
readFile = open(‘test.pdf’,‘rb’)
pdfFileReader = PdfFileReader(readFile)
pdfFileReader类
.getNumPages():计算PDF文件总页数
.getPage(index):检索指定编号的页面

PDF文件写操作:
writeFile = ‘output.pdf’
pdfFileWriter = PdfFileWriter()
pdfFileWriter类
.addPage(pageObj):根据每页返回的PageObject,写入到文件
.addBlankPage():在文件的最后一页后面写入一个空白页,保存到新文件

合并多个文档:
pdf_merger = PdfFileMerger()
pdf_merger.append(‘python2020.pdf’)
pdf_merger.merger(20, ‘insert.pdf’)
pdf_merger.write(‘merge.pdf’)
单个页面操作-PageObject类
.extractText():按照顺序提取文本
.getContents():访问页面内容
.rotateClockwise(angle):顺时针旋转
.scale(sx,sy):改变页面大小

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值