常见的内置模块学习和使用
os
os.path
sys
time
datetime
hashlib
base64
......
random
math
1、什么是模块
一个py或者一些py文件的总称,这些文件一般都是为了某一特定的功能而写的代码
2、模块的分类:
1)系统模块(由python官方提供的、内置的模块)
内置模块
特点:已经安装在了系统中,builtins默认被导入
import random #随机数相关的所有操作都放在 这个模块中
import math #跟数学相关的
2)第三方模块
非官方的,由第三方提供的
特点:必须安装才能使用
requests # pip install requests
3)自定义模块
xxx.py 导入到其他的py文件中使用
3、模块的导入
import package
import package as alias #使用别名
import package.模块名称
from package import 模块名称
4、常见的系统模块
random模块:
1)random() #返回一个[0,1)的随机数,伪随机数!!!
2) randint(m,n) #返回[m,n]之间的随机整数
3) choice() #从一个序列中随机选择元素
4) randrange(x) #随机产生一个[0,x)之间的整数
math模块:
该模块存在大量的编程语言中,一般这个模块都是用来操作数学运算
1)ceil #math.ceil() 只要数值存在小数位,则向上取整
a = 3.4
math.ceil(a)
>>>4
2)flloor #只要数值存在小数位,则向下取整
3)e #math.e 自然常数
4)pi #圆周率
5)fabs #求绝对值
6)fmod #求模(求余数)
math.fmod(10,3)
>>>1
7)pow #求幂次方
math.pow(2,3)
>>>8.0
8)sqrt #开平方根
math.sqrt(4)
os模块:
os(operator system)操作系统
主要用来操作操作系统中的文件系统
1)chdir #修改当前工作空间路径
os.chdir("D:\qiyi\offline")
2)chmod #修改权限
3)curdir #该属性表示当前路径 注意:显示的是相对路径
4)cpu_count #获取当前系统的cpu核数
5)getcwd #该属性表示当前路径 注意:获取的是绝对路径
6)listdir #遍历得到当前文件工作空间下的所有文件及文件夹,返回一个列表
7)makedirs #创建文件夹,可以级联创建多层
8)mkdir #创建文件夹,注意:只能创建一层
9)remove #删除文件
10)removedirs #删除文件夹,注意,可以多级删除
11)rename #重命名 renames
os.rename("d.txt","a.txt")
12)rmdir #删除文件夹,注意,只能一级一级删除
13) scandir #遍历得到当前工作站空间下的所有文件及文件夹,返回一个迭代器对象
14)sep #返回系统对应的文件分割符
15)system #该方法可以执行该系统对应的所有终端命令
os.system("cls")
os.path模块:这个是一个模块,是os的子模块
os.path 主要是用来操作文件的,判断文件是否存在、判断是文件还是文件夹等等
1)basename #一般而言,显示路径对应的文件名称
os.path.basename("D:\xx")
2)exists #判断文件或者文件夹是否存在
3)getsize #获取文件的大小
4)isdir #判断是否是目录
5)isfile #判断是否是文件
6)join #拼接路径
7)split #分隔文件路径
8)abspath #显示相对路径的绝对路径
os.path.abspath(".")
#遍历磁盘
import os
from os import path
def scanner_file(url):
"""
使用递归来遍历path对应的磁盘
"""
#返回当前路径下的所有文件以及文件夹的列表
files = os.listdir(url)
for f in files:
#拼接路径
#url + "os.sep" + f
file = path.join(url, f)
#判断file是不是一个文件或者文件夹
if path.isfile(file):
print(file)
else:
scanner_file(file)
scanner_file("D:\\")
sys模块:
1)argv(重要) #很重要 返回脚本名称和执行脚本时传递的参数
import sys
print(sys.argv)
2)exit #退出系统
3)getdefaultencoding(重要) #获取系统的默认编码
4)getfilesystemencoding #获取系统文件编码
5)getrecursionlimit (重要) #获取系统对于递归的层数限制
6)getrefcount #获取变量的引用计数
7)path #sys.path 所有系统变量路径
8)platform #获取系统平台
9)setrecursionlimit (重要) #设置系统对于递归的层数限制,不建议使用
10)stderr #标准错误输出
11)stdin #标准输入
12)stdout #标准输出
13)thread_info #系统线程信息
14)version #解释器版本
15)version_info #解释器内核版本信息
面试题:
在shell中,怎么获得脚本执行时指定的参数?
$1 $2
注意:
不再由程序员来管理,由一个系统已经制定好的线程来管理和维护
python的垃圾回收机制:以引用计数为主,以标记清除和分代收集为辅
hashlib:(哈希)
编程中,进行加密
1、加密算法分类
1)以是否可逆
|--可逆算法
加密和解密是否使用同一个密钥而言:
|--对称加密 #加密和解密使用同一个密钥
|--非对称加密 #使用一对密钥
|--不可逆算法
|--hash算法
可以将任何东西,加密为一个32位的16进制的字符串
特点:唯一性
|--md5
|--shale256
|--算法的使用场景
校验 安全 等等
|--注意 md5算法安全问题
md5 很安全
唯一性
hash算法虽然不可逆,但是也存在碰撞的概念,建议使用hash算法时,使用盐值混淆
import hashlib
hashlib.md5("要加密的数据"。encode("utf-8"))
md5.update("lala".encode("utf-8")) #盐值混淆
md5.hexdigest() #得到需要加密数据散列值
#第二种写法
md5 = hashlib.md5()
md5.update("要加密的数据".encode("utf-8"))
md5.update("lala".encode("utf-8"))
md5.hexdigest()
#对密码加密
import hmac
import hashlib
def getpwd_md5(msg,salt):
md = hashlib.md5(msg.encode("utf-8"))
md.update(salt.encode("utf-8"))
return md.hexdigest()
#银行 6位数字 盐值 + 迭代
#hmac不仅仅使用hash算法,而且使用对称加密,安全性更高
#hmac.new("123456",encode("utf-8"), "xiaoxiao".encode("utf-8"),"MD5")
time模块
python提供专门用来操作时间和日期的模块
1)sleep #让当前线程暂停,注意:单位是秒
time.sleep(3)
2)time #返回的是当前时间戳 1970-1-1 0:0:0至当前时间的秒数
time.time()
3)ctime #获取当前时间
time.ctime()
#通过秒,来得到一个时间
time.ctime(111111)
time.ctime(time.time()+3600)
4)localtime #获取一个时间对象
time.localtime()
t = time.localtime()
t.tm_year
>>>2020
#格式化时间
print("当前时间是{}-{}-{} {}:{}:{}".format(t.tm_year, t.tm_mon, t.tm_mday,t.tm_hour, t.tm_min, t.tm_te_sec))
5)strftime #将一个时间对象格式化为特定的字符串
timr.ctime()
time.strftime("%Y-%m-%d %H:%M:%S")
6)strptime #将一个特定的字符串解析为时间对象
time.strptime("2019-03-03 10:12:13", "%Y-%m-%d %H:%M:%S")
datetime模块
1)datetime.datetime.now #获取当前系统时间
from datetime import datetime
calendar模块 日历模块