python内置模块
什么是模块?
模块(module),它特指就是xxx.py文件
如何导入模块?
import 模块名 [ as 别名 ]
import random
import sys,math
import hashlib as hash, os.path as osp
#使用时要带上模块名
random.random()
from 模块名 import 成员名 [ as 别名 ]
from functools import partial [ as fun ]
#使用时不用带模块名
from 模块名 import *
from math import *
python内置的常见模块
random、math、os、os.path、sys、 time、datetime、hashlib、base64、hmac uuid
当你导入一个模块,Python 解析器对模块位置的搜索顺序是:
1、当前目录
2、如果不在当前目录,Python 则搜索在 shell 变量 PYTHONPATH 下的每个目录。
3、如果都找不到,Python会察看默认路径。
random
目前所有的计算机API实现的随机都是伪随机数
|-- random.random() # 返回一个[0, 1)的随机数
|-- random.randint(n, m) # 返回[n, m]范围内的随机整数
|-- random.randrange(n, m) # 返回[n, m)范围内的随机整数
|-- random.choice(sequence) # 从一个序列中随机返回一个元素
|-- random.uniform(n, m) # 返回[n, m]范围内的随机数
|-- random.shuffle(列表) # 随机洗牌列表中的元素顺序
math
进行数学计算
|-- math.ceil(num) # 向上取整
|-- math.floor(num) # 向下取整
|-- math.abfs(num) # 求绝对值
|-- math.modf(num) # 以元组的形式返回整数和小数部分
|-- math.pi # 圆周率
|-- math.pow(num, num2) # 幂次方 num**num2
|-- math.sqrt(num) # 开平方根
os
主要管理操作系统文件管理系统
|-- chdir(path) # 修改当前工作空间路径的
|-- curdir # 当前工作空间的路径
|-- os.getcwd() # 获取路径的绝对路径
|-- os.path.abspath(path) # 获取路径的绝对路径
|-- os.cpu_count() # 获取当前电脑的CPU架构
|-- os.device_encoding(fd) # 获取设备的编码
|-- os.getpid() # 获取进程编号
|-- os.getppid() # 获取当前进程的父进程编号
|-- os.kill() # 通过编号杀死进程
|-- os.listdir(path) # 遍历path路径下的所有文件和文件夹,以列表形式返回名称
|-- os.mkdir() # 创建一个单层文件夹(目录)
|-- os.makedirs() # 创建多次目录
|-- os.name # 获取操作系统名称
|-- os.rename() # 重命名
|-- os.remove() # 移除文件
|-- os.removedirs() # 移除多层目录
|-- os.rmdir() # 删除目录
|-- os.sep # 当前系统对应的文件分隔符
builtins
这个默认加载内置模块、全局函数、常见异常类
functools
这个模块主要提供跟函数相关的操作
partial()、reduce()
os.path
推荐使用 from os import path 导入方式
|-- os.path.abspath(path) # 获取path的绝对路径
|-- os.path.altsep # 路径的分割符
|-- os.path.basename(path) # 获取路径对应的文件名称
|-- os.path.dirname(path) # 获取文件所在目录
|-- os.path.exists(path) # 判断文件是否存在
|-- os.path.getatime(path) # 获取文件最后的访问时间
|-- os.path.getctime(path) # 获取文件的创建时间
|-- os.path.getmtime(path) # 获取文件的修改时间
|-- os.path.getsize(path) # 获取文件大小,单位是B(字节)
|-- os.path.isdir(path) # 判断path是不是目录
|-- os.path.isfile(path) # 判断路径是不是一个文件
|-- os.path.isabs(path) # 判断路径是不是一个绝对路径
|-- os.path.islink(path) # 判断路径是不是一个链接(软连接、硬链接)
|-- os.path.ismount(path) # 判断路径是不是一个挂载文件(U盘、光驱等)
|-- os.path.join(path1, path2) # 完成路径的拼接,会自动根据系统生成分隔符
|-- os.path.split(path) # 分隔文件路径
sys
|-- sys.argv # 获取脚本名称和参数
|-- sys.exit() # 退出系统
|-- sys.getdefaultencoding() # 获取默认编码
|-- sys.getfilesystemencoding() # 获取默认文件系统编码
|-- sys.getrecursionlimit() # 获取递归的限制层数
|-- sys.setrecursionlimit() # 设置递归的限制层数
|-- getrefcount() # 对象的引用计数次数
time
|-- time.asctime() # 返回当前时间,格式是西欧格式
|-- time.ctime() # 返回当前时间,格式是西欧格式
|-- time.gmtime() # 返回当前时间,时间对象,注意:时区是伦敦时区
|-- time.localtime() # 返回当前时间,时间对象,注意:时区是当前时区
|-- time.sleep(seconds) # 让当前线程停止运行
|-- time.time() # 获取当前时间戳
|-- time.struct_time(元组) # 构造一个对应的时间对象
|-- time.strftime() # 将一个时间对象格式化为特定的字符串输出
|-- time.strptime() # 将特别的字符串时间转换为时间对象
datetime
import datetime
|-- datetime.datetime.now() # 获取当前时间对象
|-- datetime.date(year, month, day) # 构造一个日期对象
|-- datetie.time(hour, min, seconds) # 获取时间对象
|-- str(datetime对象) # 格式化datetime对象为字符串
calendar
日历模块
hashlib
加密算法相关的模块
加密算法:
|-- 通过是否可逆
|-- 可逆加密
|-- 加密和解密是否使用同一个秘钥
|-- 对称加密 DES
使用同一秘钥加密和解密
|-- 非对称加密 RSA
使用一对公私钥对
|-- 不可逆加密(散列加密、hash加密、哈希加密)
md3、md4、md5
sha1、sha256、sha384 ...
二进制的128位数组 ==> 32位字符串
使用场景:密码加密、文件校验
md5 = hashlib.md5(password.encode(“utf-8”)) # 使用md5加密,密码格式为’utf-8’
md5.update(salt.encode(“utf-8”)) # 在密码末尾加上盐值再加密
md5.hexdigest() # 将密码转换成可读字符串
uuid
UUID 是 通用唯一识别码(Universally Unique Identifier)的缩写,是一种软件建构的标准,亦为开放软件基金会组织在分布式计算环境领域的一部分。其目的,是让分布式系统中的所有元素,都能有唯一的辨识信息,而不需要通过中央控制端来做辨识信息的指定。
>>> import uuid
>>> dir(uuid)
['Enum', 'NAMESPACE_DNS', 'NAMESPACE_OID', 'NAMESPACE_URL', 'NAMESPACE_X500', 'RESERVED_FUTURE', 'RESERVED_MICROSOFT', 'RESERVED_NCS', 'RFC_4122', 'SafeUUID', 'UUID', '_AIX', '_DARWIN', '_GETTERS', '_LINUX', '_OS_GETTERS', '_UuidCreate', '_WINDOWS', '__author__', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', '_arp_getnode', '_find_mac', '_generate_time_safe', '_has_uuid_generate_time_safe', '_ifconfig_getnode', '_ip_getnode', '_ipconfig_getnode', '_is_universal', '_lanscan_getnode', '_last_timestamp', '_load_system_functions', '_netbios_getnode', '_netstat_getnode', '_node', '_popen', '_random_getnode', '_unix_getnode', '_uuid', '_windll_getnode', 'bytes_', 'getnode', 'int_', 'os', 'platform', 'sys', 'uuid1', 'uuid3', 'uuid4', 'uuid5']
>>>
s = uuid.uuid4(字符串)