python学习笔记(三)基本扩展模块

1、datetime模块
(1)主要类
datetime.date:处理日期年月日
datetime.time:处理时间(小时分钟秒)
datetime.datetime处理日期加时间
datetime.timedelta处理时段(时间间隔)
(2)获取当前时间
datetime.date.today()返回日期
d=datetime.datetime.now()
变成字符串:datetime.date.today().strftime(’%Y-%m-%d %H:%M:%S’)
datetime.datetime.isoformat()标准日期格式
iso国际标准化组织
(3)时间戳
从格林威治时间1970.1.1 0:0:0起的总秒数
将日期转换为时间戳
timetuple:把时间转化成struct_time格式
time.mktime返回用秒数表示的时间
datetime.date.fromtimestamp(float)把时间戳转换为日期
python学习笔记(三)基本扩展模块_第1张图片
(4)时间运算
timedelta()
eg: today=datetime.datetime.now()
yesterday=today-datetime.timedelta(days=1) 可以变成hours=1
2、calendar模块
(1)制作电子日历
calendar.calendar(年)返回多行字符串的日历
calendar.month(年,月)
calendar.prmonth(年,月)直接打印
calendar.prcal(年)直接打印
(2)将日历列表化
calendar.monthcalendar(2018,9):是嵌套列表,最里层列表含7个元素,是从周一到周日,如果本月没有天数则为0
判别闰年calendar.isleap(year)
计算某个月有多少天,从周几开始
calendar.monthrange(2018,9) 返回(5,30)第一天是星期六(从开始)
指定的某天是星期几calendar.weekday(2015,4,2)

3、time模块
获取时间戳:
time.time()当前时间,可以获得程序运行时间(做差)
time.asctime()
time.ctime()均为获得当前时间
把元组数据转化为时间t=(2018,8,13,11,42,31,周几,第几天,是否为夏令时间)time.asctime(t)
利用索引获得时间格式:struct_time类
time.localtime同t的输入类型
eg t=time.localtime ,year=t[0]
time.sleep(1)让程序暂停一段时间1秒

4、数学运算模块
(1)math:整数,浮点数等复制运算
math.sin math.cos math.tan
math.pi math.e math.exp(x)
math.log(x,a)以a为底
math.pow(x,y)x的y次幂

(2)cmath:复数
cmath.polar()极坐标
cmath.rect()直角坐标,与前者互逆
其它基本运算与math相同

(3)decimal模块:处理高精度的浮点数
python原本运算浮点数时有很高的误差,例如:0.1+0.1+0.1-0.3=5.52321335e-17(结果瞎编的)
decimal.Decimal(‘0.1’)计算精度不会出现问题

(4)fractions模块:factions.Fraction(1,4) or factions.Fraction(0.25)
浮点数转化分数 fractions.from_float(1.75)会有精度损失,因为有一遍二进制。

(5)random模块:随机数种子相同,序列固定
random.seed(a=None or int)
random.random() [0,1)的随机数
uniform(m,n) m,n间的浮点数
randint(m,n)【m,n】间的整数
randomrange(a,b,n) 在[a,b)区间内以n为步长的序列中随机的一个数
getrandbits(k)生成k位二进制随机整数
random.choice()从列表,元组中随机抽取元素
random.sample(alist,n)随机从序列或元组中取n个元素
random.shuffle()给可变序列重新随机排序

5、持久化模块shelve
(1)对象持久化
类创建的对象并不是真正的数据库记录,只保存在内存上,而没有保存在外存的文件上。关闭python,实例将消失。
(2)pickle:把任意python对象格式化和解格式化
dbm:实现一个可通过键访问的文件系统,以储存字节串
shelve按照键把pickle处理后的对象储存的一个文件中

键(key)是字符串且具有唯一性
与字典的区别:一开始必须打开shelve,再修改后需要关闭它。
把任何数据对象保存到文件中去
d=shelve.open(filename)#先打开
d[key]=data#像字典一样,可读可写d.keys()
value=d[key] del d[key]
d.close()#关闭
注:把alist存入后,在改变alist文件中的alist值不变,需要再从新储存一遍

6、文本文件读写模块
(1)文件打开
普通文件:f=open(filename[,mode[,buffering]])#这里[]代表可选参数
mode:可选参数,打开模式和文件类型,第一个字母:‘r’表示读, 'w’表示写,‘x’表示在文件不存在的情况下创建并写文件,‘a’表示在文件末尾加内容,’+'表示读写模式。 第二个字母:'t’表示文本类型,'b’表示二进制文件
buffering:可选参数,文件的缓冲区,默认值为-1

(2)文件的读写操作
f.write(str)
f.writelines(strlist)写入字符串列表
f.read()#读取全部内容
f.readline()读取一行,指针到下一行
f.readlines()读取每一行,并把它们放入列表中去
python学习笔记(三)基本扩展模块_第2张图片
(3)文件的关闭
一定要关闭f.close()
关闭的作用是中止外部文件链接,同时将缓冲区的数据刷新到硬盘上。
写到硬盘上太慢,现在内存上留一个缓冲区,暂时保存在缓冲区,然后再存到硬盘上
上下文管理器:即便程序出错也会自动关闭文件
with open(‘textfile’,‘rt’) as myfile:
myfile.read()
冒号后面的语句出问题也可以自动关闭。

(4)其他文件类型.csv纯文本文件,以,分隔
特点:值没有类型,都是字符串
可以用excel打开,但是无法进行常见excel操作,没有多个工作表
读取:re=csv.reader()接受一个可迭代对象,返回一个生成器,可以从中解析出内容
文件读取:re=csv.DictReader()#由于有表头的
与render类似,但返回的每个单元格都放在一个元组的值内
写操作:w=csv.writer()
w.writerow(rows)按行写
当文件不存在时可以自动生成,可以单行或多行写入
字典数据写入:w=csv.DictWriter()
w.writeheader() 先写入表头w.writerow(rows)

(5)openpyxl
处理excel文件
Workbook类是对工作簿的抽象,一个workbook代表一个excel文档
Worksheet类是对表格的抽象
Cell类是对单元格的抽象文件写操作
操作前先导入第三方库form openpyxl import Workbook
创建excel文件wb=Workbook()
ws=wb.active#ws是当前表格
读取数据load_workbook
wb=load_workbook(filename)
ws.wb.file.active
获取单元格信息:c=wb[‘sheet’] [‘A1’]#得到cell类型对象
或者c=wb[‘sheet’].cell(row=1,column=1)指定坐标
c.coordinate返回单元格坐标
c.value返回单元格的值
c.row返回单元格所在行坐标
c.column:列坐标

(6)pdf文件 PyPDF2
PdfFileReader,PdfFileMerger,PdfFileObject,PdfFileWriter四个主要类
读写,分割和合并
只能从PDF中提取文本并返回字符串,而无法提取图像,图标或者其它数据
读取:readFile=open(‘test.pdf’,‘rb’)
PdfFileReader类:.getNumPages()计算pdf文件总页数.getPage(index)检索指定编号的页面
写操作:writeFile=‘output.pdf’
pdfFileWriter=PdfFileWriter()
PdfFileWriter类:.addPage(pageObj)根据每页返回的pageobject,写入到文件:例如从一个pdf获得一页插入到另一个pdf
,addBlankPage()在文件的最后一夜写入一个空白页
合并多个文档:pdf_merger=PdfFileMerger()
pdf_merger.append(‘python2018.pdf’)
pdf_merger.merge(20,‘test.pdf’)从索引页开始放入
pdf_merger.write(‘merge.pdf’) 把merger包含的pdf合并到一起生成一个新的pdf文件
单个页面操作PdfFileObject类:
.extractText()按照顺序提取文本
.getContents:访问页面内容
.rotateClockwise(angle):顺时针旋转
.scale(sx,sy)改变页面大小

7、图形用户界面(GUI)
easygui模块
消息窗口: easygui.msgbox() 有消息和标题,有OK按钮,点了消息窗口才会消失
python学习笔记(三)基本扩展模块_第3张图片
有按钮选项的窗口:easygui.choicebox()
python学习笔记(三)基本扩展模块_第4张图片
显示文本:eastgui.textbox() text可以是字符串或列表
python学习笔记(三)基本扩展模块_第5张图片
输入密码easygui.passwordbox()
python学习笔记(三)基本扩展模块_第6张图片
普通输入:enterbox() 与passwordbox()使用相同
打开文件:fileopenbox()
调入系统的选择文件对话框
打开文件
easygui示例:
python学习笔记(三)基本扩展模块_第7张图片
8、海龟作图turtle模块
位置,方向,画笔(粗细,颜色)
指令:向前向后,转动,速度
抬起,放下画笔
eg1:画一个等边三角形
python学习笔记(三)基本扩展模块_第8张图片
五边形
python学习笔记(三)基本扩展模块_第9张图片
用递归法来画二叉树
python学习笔记(三)基本扩展模块_第10张图片
把二叉树进行分解
python学习笔记(三)基本扩展模块_第11张图片
递归画树

import turtle

def tree(branchLen,t):#树干长度
    if branchLen >5:#树干长度过小直接停止
        t.forward(branchLen) #树干`
       t.right(20)
       tree(branchLen-15,t)#右边小树画完
       t.left(40)
       tree(branchLen-15,t)
       t.right(20)
       t.backward(branchLen)#退回原位置
       ```
 def main():
     t=turtle.Turtle()#乌龟刚才是在正中间,朝向为右
     mywin=turtle.Screen()
     t.left(90)
     t.up()#抬笔,不画
     t.backforward(100)
     t.up()#放笔
     t.color("green")
     tree(75,t)
     mywin.exitonlick()

main()

你可能感兴趣的:(python学习笔记,python,csv)