210204常用模块
1,工作中常用模块
1)os模块 -->文件操作系统(主要提供文件和文件夹相关操作)
例如 os.listdir() -->返回指定目录项所有的文件名
2)sys模块 -->系统相关操作
例如 exit() 退出程序
3)json模块 -->json数据的数据处理
4)re模块 -->正则表达式相关操作
5)math模块 -->数学相关的
math.ceil() -->向大取整
6) *cmath模块 -->复数的数学模块
complex -->复数对应的类型
7) 时间相关模块:time datetime
8) hashlib -->生成哈希摘要 加密
9) csv文件操作 -->表格文件操作,爬虫相关
import sys
import math
print(int(12.9)) # 12 直接去掉小数点
print(math.ceil(12.1)) # 13 向大取整
print(math.floor(12.9)) # 12 向小取整
print(round(12.6)) # 13 四舍五入
Python可以直接对复数进行运算
a = 10 + 2j
print(type(a)) # <class 'complex'>
b = 30 - 3j
print(a + b) # (40-1j)
print(a * b) # (306+30j)
2,生活中的使用库和模块
1)turtle -->画图
2)pygame(第三方库) -->游戏开发
3)itchat(第三方库) -->微信机器人
4)smtplib和email 邮件自动发送和接收,后端开发常用
5)reportlab(第三方) -->pdf文档操作,添加水印
6)canvas -->创建pdf水印
7)vim -->编辑器之神
8)random -->随机函数
3,模块用法
-
hash加密
1)hash加密的密文摘要是不可逆的
密码忘记后,只能重置密码,系统无法还原之前的密码
2)相同的数据通过相同的算法生成的密文摘要是一样的
3)不同大小的数据通过相同的算法生成的密文摘要长度是一样的
4)作用:
a:适用于传输大的数据包,为了保证数据完整性,先生成摘要,再发数据包,
再通过对比数据包,可以防止数据包在发送过程中被篡改或丢失
b:生成密文摘要生成hash摘要
1)创建hash对象
语法:
hashlib.算法名()
hash相关算法:
md5 -->生成的摘要存储时占CPU小
sha相关 -->占CPU大,更安全
2)添加原数据第一步:创建hash对象
import hashlib
hash = hashlib.md5()
第二步:hash对象.update(二进制数据)
hash.update(‘123456’.encode())
第三步:获取摘要
hash对象.
result = hash.hexdigest() # 拿到16进制的密文
print(result)
生成密码123456对应的密文:
e10adc3949ba59abbe56e057f20f883e -
time模块
1) 时间戳
某一个时间到格林威治时间(1970年1月1日0时0分0秒)的时间差来表示一个时间(单位:秒)
语法:
time() -->获取当前时间
优点:方便加密
占用CPU小(同一个时间时间戳保存4个字节,
用字符串表示,需要17个字节)# 获取当前时间 import time t1 = time.time() print(t1) # 1612421048.7370002 == ’2021-02-04 14:44:10'
2)localtime() ->获取当前本地时间,返回结构体时间(其中tm_wday表示星期值,范围0~6)
localtime(时间戳) ->将时间戳对应的时间转换成本地的结构体时间
t2 = time.localtime() print(t2, t2.tm_year) t3 = time.localtime(1612421538.5430157) print(t3)
-
datetime模块
1)获取当前日期
2)获取当前具体时间
3)时间的加减操作
import datetime t4 = datetime.date.today() print(t4, t4.year, t4.month) # 2021-02-04 2021 2 t5 = datetime.datetime.now() print(t5, t5.year, t5.day, t5.hour) # 2021-02-04 15:04:18.525196 2021 4 15 # 让时间t5减10天 value = datetime.timedelta(days=10) print(t5-value) # 2021-01-25 15:08:29.631558 # 时间相加 value = datetime.timedelta(days=30, hours=2) print(t5+value) # 2021-03-06 17:11:02.481301
4,数据持久化(数据本地化)
**注意:**在默认情况下程序中所有数据都是保存在运行内存中的,
运行结束后会自动销毁;只有将数据存储在硬盘中,才会一直存在。
数据只有通过文件才能存储到硬盘里
常见的文件:
数据库文件、 plist文件、json文件、txt文件、2进制文件(非文本文件)
文件操作 ->操作文件中的内容
步骤:打开文件->操作文件(读、写)->关闭文件
1)打开文件
open()函数 ->打开文件并返回一个文件对象
相关参数:
file ->需要打开的文件在计算机的路径地址
-> 绝对路径:文件或文件夹在计算机中的全路径(一般不用)
-> 相对路径:只写全路径的一部分,剩下部分用特殊符号代替
. ->用1个点来表示当前目录(当前代码文件所在的目录),可省略
… ->用2个点来表示当前目录的上层目录
… ->用3个点来表示当前目录的上层目录的上层目录
r语法
str1 = '\tabc\n12\"3'
print(str1)
'''
abc
12"3
'''
str2 = r'\tabc\n12\"3'
print(str2) # \tabc\n12\"3
2) mode ->文件打开方式(决定打开后的读或写问题,以及操作文件对应的数据类型)
第一组值:决定打开后的读或写问题;默认r只读
r ->只读
w ->只写(打开后清空原文件内容)
a ->只写(打开后保留原文件内容)
第二组值:决定操作文件数据时对应的数据类型
t ->字符串:对应文本数据 str(默认)
b ->二进制:对应音视频数据 bytes
两组数据中每组必选一个值:不选默认‘tr’
打开二进制文件必须带b
w 和a 打开不存在的文件时,直接新建此名字的文件
3) encoding ->设置文本文件的编码方式,一般设置成encoding=‘utf-8’
打开方式t 需要设置encoding
打开方式b 不能设置encoding
4)读写文件
文件对象.seek(0)
将读写位置设置到文件开头,这样每次读完后会回到文件开头再读
-
读:
方法一
文件对象.read() ->从读的位置开始读到文件结束
方法二
文件对象.readline() ->从读写位置开始读一行 -
写:
语法:
文件对象.write(数据)
5)关闭文件
文件对象.close()
6) 二进制和字符串转换
-
字符串转二进制
方法一 后面必须加 encoding=‘utf-8’
bytes(字符串)
方法二
字符串.encode()result = bytes('护士', encoding='utf-8') print(result) # b'\xe6\x8a\xa4\xe5\xa3\xab' result = '护士'.encode() print(result) # b'\xe6\x8a\xa4\xe5\xa3\xab'
-
二进制转字符串
方法一
str(二进制,encoding=‘utf-8’)
方法二
二进制.encode()