python ------ 常见的内置模块

目录

random模块

math模块

os模块

os.path模块

sys模块

加密算法

hashlib库

hmac

什么是模块?

        import XXX ------ XXX就是模块,自己定义的xxx.py文件本质就是模块

模块的分类

        通过内置的模块

                UUID OS math random

        第三方模块

                程序员、组织、公司等创建的第三方模块,如果需要使用第三方模块,就需要进行相应的安装

        在线安装

                cmd --- pip install  模块名称        python -m pip install 模块名称

        离线安装

                先下载好安装包XXX.zip  解压安装包  安装setup.py  cmd  python  install  setup.py

        自定义模块

                XXX.py

模块的导入

        import关键字  ------  import math

        import 模块名称  as  别名

        import os.path as p

        from 包 import 模块名称

random模块

主要用于产生随机数

        randint ------ 产生随机的整数[m,n]

        random ------ 产生的是0~1([0,1])之间的随机数

        uniform ------- 产生的是一个基于正态分布的随机数(一般不用)

        randrange ------ 产生的是一个范围内的随机数

        choice ------ 在序列(有序  set是无序的)中随机筛选一个元素

math模块

数学运算

        cell ----- 天花板  向上取整

        floor ------ 向下取整

        e ------ 属性  自然常熟

        fabs ------ 取绝对值 等价于全局函数中的abs()

        fmod ------ 求模运算

        isnan ------- 判断是不是一个数字(nan ---- not a number) 返回的是一个布尔值,如果数字是NaN(不是数字),则返回的是True,否则返回的就是False

代码示例:

>>> math.isnan(56)
False
>>> math.isnan(-56)
False
>>> math.isnan(math.nan)
True

        isinf ------ 判断是不是无穷大返回的是一个布尔值,如果是正无穷大或者负无穷大,则返回的True否则返回的就是False

代码示例:

>>> math.isinf(56)
False
>>> math.isinf(-56)
False
>>> math.isinf(math.inf)
True
>>> math.isinf(-math.inf)
True

        isfinite ----- 判断是不是无限

        pi ------ 圆周率

        pow ----- 幂次方

        sqrt ----- 根号 开平方根

os模块

        操作的是文件系统的模块

        chdir(path) ------ 修改当前工作目录(一般不会进行更改)

        curdir ------ 属性  获取当前目录  注意返回的是相对路径绝对路径  os.path.abspath(os.curdir)

        chmod() ------ 修改权限(一般用到Linux)

        close ------ 关闭文件路径

        cpu_count() ------ 返回的是cpu核所对应的数据线(2核4线程)

        getcwd() ------ 获取当前的路径,返回的是绝对路径,相对Linux下的pwd命名

        getpid() ------ 获取当前的进程的进程编号

        getppid() ------- 获取当前进程的父进程的进程编号

        kill() ------- 通过进程编号杀死进程

        linesep ------ 对应系统下的换行符

        listdir() ------ 返回的是对应目录下所有文件及其文件夹(隐藏文件夹也可以调取出来)

        makedirs() ------ 创建目录,支持多层创建目录(文件夹)

        mkdir() ------ 创建目录,只支持一层创建,不能多层创建

        open ------ 创建文件,等价于全局函数open()(IO流)

        pathsep ------ 获取环境变量的分隔符 Windows;linux;

        sep ------- 获取路径的分隔符

        remove(文件名或者路径) ------- 删除文件

        removedirs() ------- 移除目录,支持多级删除(递归)

        system() ------- 执行终端命令  os.system("cls") ------ 清屏

os.path模块

import os

dir(os.path)

import os.path

import os.path as p

        abspath(相对路径) ----- 返回对应路径的绝对路径  os.path.abspath(".")

        altsep ------ 查看python中的各个符号

        basename ------- 文件名称,shell编程语言中也有

        dirname ------ 文件所在目录,shell编程语言中也有

        exists ------- 判断文件或者目录是否存在(在使用爬虫的时候特别有用)

        getatime

        getctime

        getmtime

        getsize ------- 获取文件的大小,单位是字节

        isdir ------ 判断path是不是目录(文件夹)

        isfile ------- 判断path是不是文件

        isabs ------- 判断是不是绝对路径

        islink ------- 判断是不是链接

        ismount ------- 判断是不是挂载文件(Linux下使用)

        join (path1,path2) ------ 拼接路径  name = "123.txt" url = "D:\a\c" url + "\" + name

        path.join(url,name)

        sep ------- 路径的分隔符

        split ------ 分割路径

        realpath ------- 返回真实的路径  和abspath是一样的

习题:

        使用os和os.path以及函数的递归完成,给出一个路径,遍历当前路径所有的文件以及文件夹,打印出书所有文件(遇到文件输出路径,遇到文件夹继续进文件夹)

代码示例:

import os
from os import path
#定义一个函数
def scanner_flie(url):
	#os.listdir 输出文件及文件夹
	files = os.listdir(url)
	#print(flies)
	#路径的拼接,有三种方式
	for i in files:
		#real_url = url + "\\" + i
		#real_url = url + os.sep + i
		real_url = path.join(url,i)
		#print(real_url)
		#判断是不是文件或者文件夹(目录)
		if path.isfile(real_url):
			print(path.abspath(real_url))
		#是一个目录(文件夹)
		elif path.isdir(real_url):
			scanner_flie(real_url)
		else:
			print("其他情况")
			pass

scanner_flie("D:\\computer")

注意:

        不建议使用C盘

sys模块

        api_version ------- 获取当前python内部版本号        

        argv ------- 接收脚本参数,注意的是第一个参数是脚本的名称,返回的结果是列表

        copyright ------- 输出python的版本信息

        exit() -------- 退出系统

        getdefaultencoding() ------- 获取的默认的编码,默认的是utf-8(python3)

        getfilesystemencoding() ------- 获取系统文件默认编码,默认的是utf-8

        getrecursionlimit() ------ 获取python对递归的限制层数

        setrecursionlimit() ------- 重新设置递归限制层数,注意能不用的时候就尽量不要用,以免造成其他问题

        getrefcount(对象) ------- 获取的是对象的引用计数,是垃圾回收机制中引用计数

>>> ls = [1,2,3,4]
>>> sys.getrefcount(ls)
2     #默认有一个引用计数,再加上ls
>>> a = ls
>>> sys.getrefcount(ls)
3
>>> b = ls
>>> sys.getrefcount(ls)
4

        getwindowsversion() ------ 返回的窗口的版本信息

        version ------- 获取版本信息

python中垃圾回收机制是引用计数为主,以标记清除和分代收集为辐

Java:以标记清除为主,以引用计数和分代收集为辐

练习:

        根据脚本参数更改os.path中的练习题

import os
from os import path
#定义一个函数
def scanner_flie(url):
	#os.listdir 输出文件及文件夹
	files = os.listdir(url)
	#print(flies)
	#路径的拼接,有三种方式
	for i in files:
		#real_url = url + "\\" + i
		#real_url = url + os.sep + i
		real_url = path.join(url,i)
		#print(real_url)
		#判断是不是文件或者文件夹(目录)
		if path.isfile(real_url):
			print(path.abspath(real_url))
		#是一个目录(文件夹)
		elif path.isdir(real_url):
			scanner_flie(real_url)
		else:
			print("其他情况")
			pass

#scanner_flie("D:\\computer")
ls = sys.argv
if len(ls) < 2:
	print("对不起,这个需要输入脚本参数,参数是需要遍历的路径(磁盘)")
else:
	#scanner_flie(sys.argv[1])
	scanner_flie(ls[1])

加密算法

加密算法的分类

        按照算法是否可逆:

        可逆算法:

        是不是使用同一个密钥:

                对称加密:解密和加密使用的是同一个密钥(可以暴力破解) DES算法

                不对称加密:解密和加密时候使用的一对密钥(公钥,私钥)

         不可逆算法:

                特点:不可逆、结果唯一  MD5

hashlib库

import hashlib

dir(hashlib)

哈希算法实现

        使用步骤:

                创建一个算法对象(md5 sha256),返回一个算法对象,注意的是接收的是字节数据,不是字符串,所以需要将字符串转换为字节数据

代码示例:

>>> md5 = hashlib.md5("12345".encode("utf-8"))
>>> md5.hexdigest()
'827ccb0eea8a706c4c34a16891f84e7b'

没有做盐值混淆的情况下,密文很容易被破解

一般要使用盐值混淆进行加密

md5.update(salt)

代码示例:

>>> md5 = hashlib.md5("12345".encode("utf-8"))
>>> md5.update("@@#$%^^&&*###!!!!".encode("utf-8"))
>>> md5.hexdigest()
'5b3b1111cba1e996e2cbd78df871ad0c'

注意:

        盐值越复杂,加密越安全

hmac

hmac也是一个哈希加密库,而且用到了对称加密

参数:

        第一个参数是要加密的字符串

        第二个参数是盐值

        第三个参数是加密算法

代码:

>>> MD5 = hmac.new("12345".encode("utf-8"),"hahhah&&&&".encode("utf8"),hashlib.md5)
>>>
MD5.hexdigest()
'4deb2ab2f5ad1aecbf0dcb8142a853a8'

        首先使用对称加密(密钥就是盐值),之后又将加密后的数据再进行了依次hash加密进行了盐值混淆,所以这个结果非常安全

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值