一.系统常用模块介绍
-
os模块 - 用来提供文件和文件夹相关操作的模块
import os 1) os.getcwd() - 获取当前目录 print(os.getcwd()) open(os.getcwd() + '/test.py') 2) os.listdir(文件夹路径) - 获取指定文件夹下所有的文件和文件夹的名字(获取指定文件夹下所 有内容) 3) 创建文件夹 - mkdir、makedirs os.mkdir('./files/a') os.makedirs('./files/aaa/bbb/ccc') 4) os.path.basename - 返回文件名 os.path.basename(./files/file1.txt) print(result) # file1.txt 5) os.path.exists(文件/文件夹路径) - 判断指定文件或文件夹是否存在 6) os.path.isfile(路径) - 判断路径是否是文件 7) os.path.splitext(文件路径) - 文件名和后缀分离
-
数学模块
import math # 这里面所有的工具都是针对普通数字的
import cmath # 这里面所有的工具都是针对复数的
Python中和数字相关的类型有4种:int、float、bool、complex
ai + b - 复数,i叫虚数单位,i ** 2 == -1
注意:Python中的复数,j是虚数单位
x = 2j + 3 y = 3j - 4 print(x + y) # -1+5j print(x * y) # -18+j
#math模块
1)小数转整数
math.ceil(数字) - 向大取整
math.floor(数字) - 向小取整
round(数字) - 四舍五入
print(math.ceil(1.9),math.ceil(1.1)) #2,2 print(math.ceil(1.9),math.ceil(1.1)) #1,1 print(round(1.9)) # 2 print(round(1.1)) # 1
2)求绝对值
abs(数字) math.fabs(数字) print(abs(-30)) # 30 print(math.fabs(-30)) # 30.0 print(abs(-30.56)) # 30.56 print(math.fabs(-30.56)) # 30.56
-
随即模块
import random 1) 产生随机整数: random.randint(a,b) - 产生a到b的随机整数, [a, b] print(random.randint(1, 2)) 2) 产生随机小数:random.random() - 产生0~1的随机小数 print(random.random()) 产生0~100的随机小数 print(random.random() * 100) 产生50~100的随机小数 print(random.random() * 50 + 50) 产生M~N的随机小数:random.random() * (N-M) + M 3)在指定的等差数列中随机获取一个数: random.randrange(起点, 终点, 步长) - [起点, 终点) 产生0~100的随机偶数 print(random.randrange(0, 101, 2)) 4) 洗牌(随机打乱列表中元素的顺序) random.shuffle(列表) nums = [10, 20, 30, 40, 50, 60] random.shuffle(nums) print(nums) 5) 抽牌 random.choice(序列) - 随机获取一个元素 random.choices(序列, k=数量, cum_weights=权重值) - 随机获取多个元素(有放回) random.sample(序列, k=数量) - 随机获取多个元素(无放回) nums = ['宝马M5', '清空购物车', '现金200万', '谢谢!'] result = random.choices(nums, cum_weights=[1, 3, 1, 10000], k=3) print(result) result = random.sample(nums, k=3) print(result)
-
哈希摘要
1)哈希加密(摘要)的特点
- 密文不可逆
- 相同的数据通过相同的算法得到的密文相同,不相同的数据通过相同的算法得到的密文不相同
- 不同长度的数据通过相同的算法得到的密文长度相同
2)添加生成摘要数据
hash对象.update(二进制数据)
Python中字符串和二进制的相互转换: 二进制 - bytes a. 字符串转二进制 方法一:bytes(字符串, 'utf-8') 方法二:字符串.encode() b. 二进制转字符串 方法一:str(二进制, 'utf-8') 方法二:二进制.decode()
result1 = '123456'.encode() print(type(result1)) result2 = str(result1, 'utf-8') print(result2, type(result2)) result3 = result1.decode() print(result3, type(result3)) 对文本数据生成摘要 hash.update('sjhgfja234827389ajshfkhkahsdjkfhaskhfdkjashfkhakdfasdf盛世嫡妃'.encode()) 生成文件的摘要 hash.update(open('files/file1.txt', 'rb').read())
3)获取摘要值(获取密文)
result = hash.hexdigest() print(result)
-
time模块
import time
时间戳指的是某一个时间到1970年1月1日0时0分0秒(格林威治时间)的时间差,单位是秒。
1) time.time() - 获取当前时间(当前时间的时间戳) t1 = time.time() print(t1, type(t1)) # 1639986631.790727 <class 'float'> 2) time.localtime() time.localtime() - 获取当前时间(返回的时候本地时间对应的结构体时间) time.localtime(时间戳) - 将时间戳转换成结构体时间 t2 = time.localtime() print(t2) 通过结构体时间单独获取指定信息 tm_wday - 星期值,从0~6表示是周一~周天 print(t2.tm_year, t2.tm_mon) t3 = time.localtime(0) print(t3) t4 = time.localtime(1639986631.790727) print(t4) 3) time.sleep(时间) - 让程序暂停/等待指定时间(单位秒) time.sleep(2) print('===============') 结构体时间和字符串时间的相互转换 xxxx-xx-xx xx:xx:xx xxxx/xx/xx xx:xx:xx xxxx年xx月xx日 xx时xx分xx秒 4) time.strftime(时间格式, 结构体时间) - 将结构体时间转换成指定格式的字符串时间 print(t2) # time.struct_time(tm_year=2021, tm_mon=12, tm_mday=20, tm_hour=16, tm_min=28, tm_sec=20, tm_wday=0, tm_yday=354, tm_isdst=0) result = time.strftime('%Y年%m月%d日 %H时%M分%S秒 %A', t2) print(result) # 2021-12-20 16:28:20 PM xx:xx 上午 4:30 result = time.strftime('%p %I:%M', t2) print(result) 5)time.strptime(时间字符串, 时间格式) - 将字符串时间转换成结构体时间 2017-3-24 是周几? '2017-3-24' result = time.strptime('2017-3-24 PM 2:30', '%Y-%m-%d %p %I:%M') print(result) print(result.tm_wday) 6)time.mktime(结构体时间) - 将结构体时间转换成时间戳 print(t2) result = time.mktime(t2) print(result) # 1639991023.0
-
datetime模块
from datetime import datetime, date, time, timedelta 创建datetime类型的数据 1)获取当前时间 t1 = datetime.now() print(t1, type(t1)) # 2021-12-20 17:13:10.560317 <class 'datetime.datetime'> t2 = datetime.today() print(t2, type(t1)) # 2021-12-20 17:13:31.792873 <class 'datetime.datetime'> 2) 直接提供时间信息 # datetime(年, 月, 日, 时=0, 分=0, 秒=0) t3 = datetime(2018, 10, 1) print(t3, type(t3)) # 2018-10-01 00:00:00 <class 'datetime.datetime'> 3) 通过字符串时间创建时间对象 t4 = datetime.strptime('2019-3-31 23:59:59', '%Y-%m-%d %H:%M:%S') print(t4, type(t4)) # 2019-3-31 23:59:59 <class 'datetime.datetime'> 获取时间对象具体的时间信息 print(t4.year) print(t4.month) print(t4.day) print(t4.hour) print(t4.minute) print(t4.second) print(t4.weekday()) 时间的加减操作 时间对象 -/+ timedelta(days=?, hours=?, minutes=?, seconds=?, weeks=?) 练习:2019-3-31 23:59:59 2秒后是什么时候 result = t4 + timedelta(seconds=2) print(result) 练习:2019-3-31 23:59:59 4天是什么时候 result = t4 - timedelta(days=4) print(result) 练习:2019-3-31 23:59:59 一周后是什么时候 result = t4 + timedelta(weeks=1) print(result) 练习:2019-3-31 23:59:59 5天2小时30分钟后是什么时候 result = t4 + timedelta(days=5, hours=2, minutes=30) print(result)