菜菜学习python第六天--内置模块的学习

常见的内置模块学习和使用

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模块   日历模块

你可能感兴趣的:(Python)