python常用模块:time,random,os,sys,hashlib,logging,序列化

常用模块

1. 时间模块 ***
2. random模块 *****
3. os模块
4. sys模块
5. 序列化模块 *****
6. hashlib模块 ****
7. logging模块 *****

时间模块:

#导入及常用方法
import time
1.time.sleep(secs)
(线程)推迟指定的时间运行。单位为秒
2、time.time() 获取当前时间戳

时间分为三种:

  • 时间戳时间,float数据类型,格林威治时间,给机器用的时间
  • 格式化时间,str数据类型(字符串时间) ,给人看的时间
  • 结构化时间,时间对象,是以上两种时间的中间状态
#时间戳时间
import time
print(time.time())

在这里插入图片描述

#格式化时间
import time
print(time.strftime('%Y-%m-%d'))
print(time.strftime('%Y-%m-%d %H:%M:%S'))

在这里插入图片描述

#结构化时间
time_obj = time.localtime()
print(time_obj) #显示属性
print(time_obj.tm_day)#类似于对象调用属性的用法

在这里插入图片描述
几种时间格式之间的转换:

在这里插入图片描述
格式化的时间字符串(Format string):

  • %y 两位数的年份表示(00-99)
  • %Y 四位数的年份表示(000-9999)
  • %m 月份(01-12)
  • %d 月内中的一天(0-31)
  • %H 24小时制小时数(0-23)
  • %I 12小时制小时数(01-12)
  • %M 分钟数(00=59)
  • %S 秒(00-59)
  • %a 本地简化星期名称
  • %A 本地完整星期名称
  • %b 本地简化的月份名称
  • %B 本地完整的月份名称
  • %c 本地相应的日期表示和时间表示
  • %j 年内的一天(001-366)
  • %p 本地A.M.或P.M.的等价符
  • %U 一年中的星期数(00-53)星期天为星期的开始
  • %w 星期(0-6),星期天为星期的开始
  • %W 一年中的星期数(00-53)星期一为星期的开始
  • %x 本地相应的日期表示
  • %X 本地相应的时间表示
  • %Z 当前时区的名称
  • %% %号本身

random模块:

  • import random
  • random.random() #0-1随机小数
  • random.uniform(1,10) #1-10随机小数
  • random.randint(1,2) #闭区间,包含2在内的随机整数
  • random.randrange(1,2) #[1,2) 不包含2

随机抽取一个值:

lst = [1,2,3,'aaa',('wahaha','qqxing')]
ret = random.choice(lst)
print(ret)

在这里插入图片描述
随机抽取多个值:

lst = [1,2,3,'aaa',('wahaha','qqxing')]
ret = random.sample(lst,2)
print(ret)

在这里插入图片描述
打乱顺序,在原列表中顺序打乱,只能排列表:

lst = [1,2,3,'aaa',('wahaha','qqxing')]
random.shuffle(lst)
print(lst)

在这里插入图片描述
生成六位数字+字母验证码:

def rand_code(n=6):
	code = ''
	for i in range(n):
		num = str(random.randint(0,9))
		rand_alph = chr(random.randint(97,122))
		rand_alph_upper = chr(random.randint(65,90))
		atom_code = random.choice([num,rand_alph,rand_alph_upper])
		code += atom_code
	return code	
ret = rand_code()		
print(ret)

在这里插入图片描述

os模块:

  • os.makedirs(‘dirname1/dirname2’) 可生成多层递归目录
  • os.removedirs(‘dirname1’) 若目录为空,则删除,并递归到上一级目录,如若也为空,则删除,依次类推
  • os.mkdir(’‘dirname’) 生成单级目录
  • os.listdir(‘dirname’) 列出指定目录下的所有文件和子目录,包括隐藏文件,并以列表方式打印
  • os.remove() 删除一个文件
  • os.stat(‘path/filename’) 获取文件/目录信息

  • os.system(‘bash command’) 运行shell命令,直接显示
  • os.popen(‘bash command’).read() 运行shell命令,获取执行结果
  • os.getcwd() 获取当前工作目录,即python脚本工作的目录路径
  • os.chdir(‘dirname’) 改变当前脚本工作目录

  • os.path.abspath(path) 返回path规范化的绝对路径
  • os.path.split(path) 将path分割成目录和文件名二元组返回
  • os.path.dirname(name) 返回path的目录。其实就是os.path.split(path) 的第一个元素
  • os.path.basename(path) 返回path最后的文件名,即os.path.split(path)的第二个元素。 如果path以/或 \ 结尾,则返回空值。
  • os.path.exists(path) 如果path存在,返回True,否则False
  • os.path.isfile(path) 如果path是一个存在的文件,返回True
  • os.path.isdir(path) 如果path是一个存在的目录,则返回True
  • os.path.getsize(path) 返回path的大小

sys模块:

  • sys.argv 命令行参数list,第一个元素是程序本身路径
  • sys.exit(n) 退出程序,正常退出时exit(0),错误退出sys.exit(1)
  • sys.version 获取python解释程序的版本信息
  • sys.path 返回模块的搜索路径,初始化时使用PYTHONPATH环境变量的值
  • sys.platform 返回操作系统平台名称

序列化模块:

什么叫序列化——将原本的字典、列表等内容转换成一个字符串的过程就叫做序列化

为什么要序列化:
1、以某种存储形式使自定义对象持久化
2、将对象从一地方传递到另一个地方

在这里插入图片描述
json模块提供了四个功能:dupms,dump,loads,load

import json
dic = {'aaa':'bbb','ccc':'ddd'}
str_dic = json.dumps(dic) #转成序列化
print(dic)
print(str_dic,type(str_dic))

ret = json.loads(str_dic) #从序列化转成数据结构字典

在这里插入图片描述


json格式的限制:json格式的key必须是字符串,如果数字为key,那么dumps之后会强行转化。json不支持元组做key!!!

dic = {1:2,3:4}
str_dic = json.dumps(dic)
print(str_dic)
new_dic = json.loads(str_dic)
print(new_dic)

在这里插入图片描述
中文格式的,需要使用ensure_ascii

dic3 = {'abc':(1,2,3),'country':'中国'}
str_dic3 = json.dumps(dic3,ensure_ascii = False)
print(str_dic3)

在这里插入图片描述
用于序列号的两个模块:

  • json,用于字符串和python数据类型间进行转换
  • pickle,用于python特有的类型和python的数据类型间进行转换。
    -pickle模块提供了四个功能:dumps、dump、loads、load 可以把python中任意的数据类型序列化

这里要说明一下,json是一种所有的语言都可以识别的数据结构。
如果我们将一个字典或者序列化成了一个json存在文件里,那么java代码或者js代码也可以拿来用。
但是如果我们用pickle进行序列化,其他语言就不能读懂这是什么了~
所以,如果你序列化的内容是列表或者字典,我们非常推荐你使用json模块

hashlib模块:

摘要算法的模块

能够把一个字符串数据类型的变量转换成一个定长的密文的字符串,这个字符串里的每一个字符都是一个十六进制数字。
对于同一个字符串,不管这个字符串有多次,只要是相同的,无论在什么环境下,多少次执行,在任何语言中,使用相同的算法,得到的结果永远是相同的。

md5算法:

import hashlib
s = 'alex3714'
#md5是一个算法,32位的字符串,每个字符都是一个十六进制
md5_obj = hashlib.md5()
md5_obj.update(s.encode('utf-8'))
res = md5_obj.hexdigest()
print(res,len(res),type(res))

在这里插入图片描述
sha1算法:40位的字符串,每个字符都是一个十六进制。

import hashlib
s = 'alex3714'
sha1_obj.update(s.encode('utf-8'))
res_sha = sha1_obj.hexdigest()
print(res_sha,len(res_sha),type(res_sha))

在这里插入图片描述

logging模块:

功能:

  • 日志格式的规范
  • 操作的简化
  • 日志的分级管理

logging模块的使用:

  • 普通配置型 ,简单的,可定制化差
  • 对象配置型 ,复杂的,可定制化强

对象配置型:

  1. 创建一个logger对象
  2. 创建一个文件管理操作符
  3. 创建一个屏幕管理操作符
  4. 创建一个日志输出的格式
  5. 文件管理操作符,绑定一个格式
  6. 屏幕管理操作符,绑定一个格式
  7. logger对象 绑定 文件管理操作符
  8. logger对象 绑定 屏幕管理操作符
import logging
#创建一个logger对象
logger = logging.getLogger()
#创建一个文件管理操作符
fh = logging.FileHandler('logger.log',encoding='utf-8')
#创建一个屏幕管理操作符
sh = logging.StreamHandler()
#创建一个日志输出的格式
format1 = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
#文件管理操作符 绑定一个格式
fh.setFormatter(format1)
#屏幕管理操作符 绑定一个格式
sh.setFormatter(format1)
logger.setLevel(logging.DEBUG) #显示debug,info
#logger对象 绑定文件管理操作符
logger.addHandler(fh)

#logger对象绑定屏幕管理操作符
logger.addHandler(sh)

logger.warning('警告信息')
logger.debug('debug message')
logger.info('info message')

在这里插入图片描述
在这里插入图片描述
同时生成了logger.org的日志文件。

发布了26 篇原创文章 · 获赞 5 · 访问量 777

猜你喜欢

转载自blog.csdn.net/weixin_44730235/article/details/105374796
今日推荐