栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

python基础学习之基本拓展模块

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

python基础学习之基本拓展模块

时间相关模块 (一)datatime模块
  1. 可对date、time、datetime三种时间模式进行单独管理
    datetime.date() 处理日期(年月日)
    datetime.time() 处理时间(时分秒、毫秒)
    datetime.datetime() 处理日期+时间
    datetime.timedelta() 处理时段(时间间隔)
  2. 获取当前时间
    〉获取今天的日期
    datetime.date.today()
    datetime.datetime.now()
    〉修改日期格式
    使用strftime格式化
    datetime.datetime.isoformat()
import datetime
datetime.date.today()
datetime.date(2022, 7, 20)
datetime.date.today().strftime('%Y-%m-%d %H:%M:%S')
'2022-07-20 00:00:00'
d = datetime.datetime.now()
d
datetime.datetime(2022, 7, 20, 20, 42, 57, 132554)
d.isoformat()
'2022-07-20T20:42:57.132554'
  1. 时间戳是指格林威治时间1970年01月01日00时00分00秒起至现在的总秒数
  2. 将日期转换成时间戳
    timetuple函数
    将时间转换成struct_time格式
    time.mktime函数
    返回用秒数来表示时间的浮点数
  3. 将时间戳转换成日期
    datetime.date.fromtimestamp()
import time,datetime
today = datetime.date.today()
today.timetuple()
time.struct_time(tm_year=2022, tm_mon=7, tm_mday=20, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=2, tm_yday=201, tm_isdst=-1)
time.mktime(today.timetuple())
1658246400.0
datetime.date.fromtimestamp(1658246400.0)
datetime.date(2022, 7, 20)
  1. 时间上的加减法
    timedelta()方法
    表示两个时间点的间隔
import datetime
today = datetime.datetime.now()
yesterday = today - datetime.timedelta(days=1)
print(yesterday)
2022-07-19 20:51:43.275831
hours = today - datetime.timedelta(hours=1)
print(hours)
2022-07-20 19:51:43.275831
(二)calendar模块
  1. 制作电子日历
    〉 calendar模块
    跟日历相关的若干函数和类,可以生成文本形式的日历
    〉 常用函数
    calendar.calendar(<年>)
    calendar.month(<年>,<月>)
    calendar.prmonth(<年>,<月>)
    calendar.prcal(<年>)
  2. 制作电子日历:一个月
    calendar.month(<年>,<月>)
    返回多行字符串
    calendar.prmonth(<年>,<月>)
    相当于print (calendar.month (<年>,<月>))
import calendar
calendar.month(2020,11)
'   November 2020nMo Tu We Th Fr Sa Sun                   
                1n 2  3  4  5  6  7  8n 
                9 10 11 12 13 14 15n 
                16 17 18 19 20 21 22n
                23 24 25 26 27 28 29n30n'
                
print(calendar.month(2020,11))
   November 2020
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
  1. 制作电子日历:一整年
    calendar.calendar(<年>)
    返回多行字符串
    calendar.prcal(<年>)
    相当于print (calendar.prcal (<年>))
  2. 将日历列表化
    〉 calendar.monthcalendar()
    返回某一年的某一个月份日历,是一个嵌套列表
    最里层的列表含有七个元素(列表的0-6),代表一周(从周一到周日)
    如果没有本月的日期,则为0
import calendar
calendar.monthcalendar(2020,11)
[[0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0]]
  1. 与日历相关的计算
    〉 判别闰年
    普通闰年:能被4整除但不能被100整除的年份
    世纪闰年:能被400整除的年份
    calendar.isleap(<年>)(返回true or false)
  2. 与日历相关的计算
    〉 计算某月共有多少天,从周几开始
    从0开始,依次为周一、周二…
    〉 计算某天是周几
    返回值为0~6,依次对应的是周一到周日
calendar.monthrange(2020,11)
(6, 30)
calendar.weekday(2020,11,7)
5
(三)time模块
  1. 获取时间戳
    〉 time.time()方法
    〉 时间戳的用处 (可以用来计时)
import time
t1 = time.time()
a = 0
for i in range(n):
    a += i
print(a)
t2 = time.time()
print(t2-t1)
  1. 获取日期格式
    〉 获取当前时间
    time.asctime()
    time.ctime()
    out:‘Mon Aug 13 16:01:27 2018’
    〉 将元组数据转化为日期
    t = (2018, 8, 13, 11, 42, 31, 0, 0, 0)(年月日时分秒等)
    time.asctime(t)
    out:‘Mon Aug 13 11:42:31 2018’
    这一系列的数值分别对应年、月、日、时、 分、秒、周几、一年中的第几天、是否为夏令时间。

  2. 利用索引获取时间信息
    〉 struct_time类
    time.localtime()(得到下面所有)
    Out:time.struct_time(tm_year=2018, tm_mon=8, tm_mday=13, tm_hour=12,
    tm_min=24, tm_sec=11, tm_wday=0, tm_yday=225, tm_isdst=0)
    〉 索引获取时间信息
    t = time.localtime()
    year = t[0]
    out:2018

  3. 让程序睡一会
    〉 让程序运行到某处便暂停几秒
    time.sleep()

几个算数模块 (一)math模块

〉 math模块支持整数、浮点数运算
math.sin() / math.cos() / math.tan()
math.pi Π = 3.14159…
math.log(x,a) 以a为底的x的对数
math.pow(x,y) x的y次方
〉 cmath模块支持复数运算
cmath.polar() 极坐标
cmath.rect() 笛卡尔坐标
cmath.exp(x) e的x次方
cmath.log(x,a) 以a为底的x的对数
cmath.log10(x) 以10为底x的对数
cmath.sqrt(x) 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
0’)-Decimal(‘0.3’)
Out:Decimal(‘0.00’)

(三)fractions模块 (有理数/分数)

〉 分数-实现了一个有理数对象
〉 生成分数
from fractions import Fraction
Fraction(1,4)/Fraction(‘0.25’)
〉 浮点数转换为分数
Fraction.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(),可以将可变序列中所有元素随机排序
注意:每个前面都要加random.

持久化模块:shelve
  1. 对象持久化
    〉 临时性对象
    类创建的对象并不是真正的数据库记录存储在内存而不是文件中
    关闭python,实例将消失
    〉 对象持久化
    对象在创建它们的程序退出之后依然存在
    构造数据库
  2. shelve模块
    提供基本的存储操作,通过构造一个简单的数据库, 像操作字典一样按照键存储和获取本地的Python对象,使其可以跨程序运行而保持持久化
    〉 键
    必须是字符串,且是唯一的
    〉 值
    任何类型的Python对象
    〉 与字典类型的区别
    一开始必须打开shelve,并且在修改后需要关闭它
    〉 数据处理
    不支持类似SQL的查询工具
    但只要通过键获取到保存在文件的对象,就可以像正常的数据对象一样处理
  3. 常用操作
    〉 将任何数据对象,保存到文件中去
    d = shelve.open(filename)
    open函数在调用时返回一个shelf对象,通过该对象可以存储内容
    〉 类似字典形式访问,可读可写
    d[key] = data
    value = d[key]
    del d[key]
    〉 操作完成后,记得关闭文件
    d.close()
文本文件读写
  1. 文件的打开
    〉 普通文件
    数据持久化的最简单类型
    仅仅是在一个文件名下的字节流,把数据从文件读入内存,从内存写入文件
    〉 open()函数
    f = open(filename[,mode[,buffering]])
    f: open()返回的文件对象
    filename:文件的字符串名
    mode:可选参数,打开模式和文件类型
    buffering: 可选参数,文件的缓冲区,默认为-1
  2. 文件的打开模式
    〉 mode第一个字母表明对其的操作:
    ‘r’表示读模式
    ‘w’表示写模式
    ‘x’表示在文件不存在的情况下新创建并写文件
    ‘a’表示在文件末尾追加写内容
    ‘+’表示读写模式
    〉 mode第二个字母是文件类型
    l ‘t’表示文本类型
    l ‘b’表示二进制文件
  3. 文件的读写和访问
    〉 文件的写操作
    f.write(str)
    f.writelines(strlist):写入字符串列表
    〉 文件的读操作
    f.read()
    f.readline():返回一行
    f.readlines():返回所有行、列表
  4. 文件的关闭
    〉 文件打开后要记得关闭
    关闭的作用是终止对外部文件的连接,同时将缓存区的数据刷新到硬盘上
    〉 调用close()方法
    f.close()
    〉 使用上下文管理器(contextmanager)
    确保在退出后自动关闭文件
    with open(‘textfile’,’rt’) as myfile:
    myfile.read()
(一)结构化文本文件:CSV(多用电子表格打开)
  1. 纯文本文件,以“,”为分隔符
    值没有类型,所有值都是字符串
    不能指定字体颜色等样式
    不能指定单元格的宽高,不能合并单元格
    没有多个工作表
    不能嵌入图像图表
  2. 文件读取 -reader
    re = csv.reader()
    接受一个可迭代对象(比如csv文件),能返回一个生成器,可以从其中解析出内容(可用迭代循环读出来)
  3. 文件读取 -DictReader
    re = csv.DictReader()
    与reader类似
    但返回的每一个单元格都放在一个元组的值内
  4. 文件写操作
    w = csv.writer()
    w.writerow(rows)
    当文件不存在时,自动生成
    支持单行写入和多行写入
  5. 字典数据写入
    w = csv.DictWriter()
    w.writeheader()
    w.writerow(rows)
(二)结构化文本文件:Excel
  1. openpyxl模块
    用来读写扩展名为xlsx/xlsm/xltx/xltm的文件
    Workbook类是对工作簿的抽象
    Worksheet类是对表格的抽象
    Cell类是对单元格的抽象文件写操作
  2. 操作之前先导入第三方库
    安装: pip install openpyxl
    导库: from openpyxl import workbook
  3. 创建Excel文件
    一个Workbook对象代表一个Excel文档,使用该方法创建一个Worksheet对象后才能打开一个表
    from openpyxl import Workbook
    wb = Workbook()
    ws = wb.active
  4. 读取Excel文件
    from openpyxl import load_workbook
    wb = load_workbook(filename)
    ws = wb.file.active
  5. 获取单元格信息
    获取Cell对象
    c = wb[‘sheet’][‘A1’]
    c = wb[‘sheet’].cell(row=1,column=1)
    c.coordinate : 返回单元格坐标
    c.value : 返回单元格的值
    c.row : 返回单元格所在的行坐标
    c.column : 返回单元格所在列坐标
(三)结构化文本文件:PDF
  1. 轻松处理pdf文件的库 –PyPDF2
    包含了PdfFileReader、PdfFileMerger、PageObject和PdfFileWriter四个主要类
    能进行读写、分割、合并、文件转换等多种操作
    只能从PDF文档中提取文本并返回为字符串,而无法提取图像、图表或其他媒体
  2. 读取PDF文件
    readFile = open(‘test.pdf’,‘rb’)
    pdfFileReader = PdfFileReader(readFile)
  3. pdfFileReader类
    .getNumPages():计算PDF文件总页数
    .getPage(index):检索指定编号的页面
  4. PDF文件的写操作
    writeFile = ‘output.pdf’
    pdfFileWriter = PdfFileWriter()
  5. pdfFileWriter类
    .addPage(pageObj):根据每页返回的PageObject,写入到文件
    .addBlankPage():在文件的最后一页后面写入一个空白页,保存到新文件
  6. 合并多个文档
    pdf_merger = PdfFileMerger()
    pdf_merger.append(‘python2018.pdf’)
    pdf_merger.merge(20, ‘insert.pdf’)
    pdf_merger.write(‘merge.pdf’)
  7. 单个页面操作 –PageObject类
    .extractText():按照顺序提取文本
    .getContents():访问页面内容
    .rotateClockwise(angle):顺时针旋转
    .scale(sx,sy):改变页面大小
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1019402.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号