目录
7.加密模块hashlib:接受传入内容,计算后得到hash值
(1)查看方法:
- import math
- print(dir(math))
(2)常用方法:
(1)查看:print(dir(random))
(2)例:seed()方法改变随机数的生成器种子,可以在调用时使用
- import random
- random.seed()
- print('默认:',random.random())
- print('默认:',random.random())
- random.seed(10)
- print('使用10作为种子数:',random.random())
- print('使用10作为种子数:',random.random())
-
- random.seed('hello',2)
- print('字符串',random.random())
(3)random(a,b):返回一个随机整数N,满足:a<=N<=b
(4)random.sample(range(0,20),10):返回范围内的指定个数的随机列表
- import os
- print(os.name)
- # nt nt为windows系统,linux与mac为posix
(1)路径:定位一个文件或目录的字符称为路径
- 例:显示相对和绝对路径
- import os
- print(os.getcwd()) # 获取当前的工作目录
- print(os.path.abspath('sss46.py')) # 获取某文件的绝对路径
(2)判断目录是否存在
格式:os.path.exsts(path)
- import os
- print(os.path.exists('c:\demo')) # 判断目录 False
- print(os.path.exists(r'd:\pythontest')) # 判断文件 True
(3)目录的创建
PS:一般用于创建指定路径的最后一级目录,上级目录不存在则抛出异常,被创建目录已存在也会抛出异常
例:创建一个demo目录
- import os
- os.mkdir(r'd:\demo')
- PS:上例再次执行会报错,由于目录已存在会抛出异常,所以一般会和判断目录是否存在的函数一同使用,应改为:
- import os
- path = 'c:\\demo'
- if not os.path.exists(path):
- os.mkdir(path)
- else:
- print('目录已存在')
- import os
- os.makedirs(r'd:\t1\t2\t3\t4')
例:批量创建24个递归目录
- import os
- os.mkdir('c:\\demo')
- for i in range(1,25):
- if not os.path.exists('c:\\demo\\第{}次课'.format(i)):
- os.mkdir('c:\\demo\\第{}次课'.format(i))
(4)目录的删除
格式:os.rmdir(path)
PS:只有删除被删除的目录为空时,才可以被删除
例:
- import os
- for i in range(1,25):
- os.rmdir(r'd:\de\第{}次课'.format(i))
附:删除文件:os.remove(path)
(5)文件或目录的重命名
格式:os.rename(’src’,’dst’)
- import os
- os.mkdir('c:\\demo')
- os.rename('c:\\demo','c:\\demo1')
PS:重命名的目录或文件不存在会抛出异常,一般需要和判断目录是否存在一同使用
(6)获取文件信息
- import os
- print(os.stat(r'd:\pythontest\sss46.py'))
(7)常见的os模块方法汇总
(8)os.path模块常用方法:
(1)作用:用于和python运行时设置资源和配置,与当前程序交互使用
(2)常见方法:
(3)示例:
- import sys
-
- a = 2
- if a <= 2:
- sys.exit(8) # 退出python的程序执行
- print(a)
- import sys
- print(sys.version)
- # 3.9.6 (tags/v3.9.6:db3ff76, Jun 28 2021, 15:26:21) [MSC v.1929 64 bit (AMD64)]
- import sys
- aa = sys.stdin.readline() # sys.stdin.readline()比input()多接受一个\n
- bb = input('请输入:')
- print(len(aa))
- print(len(bb))
- # china
- # 请输入:china
- # 6---多了个\n(回车)
- # 5
(1)概念:通用唯一标识符,对于硬件保证其在空间和时间上唯一,一般为32B(16进制表示)
(2)python提供UUID1、3、4、5个版本的UUID
(3)示例:
- import uuid
- name = 'test_name'
- namepace = uuid.NAMESPACE_DNS
- a = uuid.uuid1() # 基于时间戳
- print(a, type(a))
- b = uuid.uuid3(namepace, name) # 基于MD5的散列值
- print(b, type(b))
- c = uuid.uuid4() # 基于随机数
- print(c,type(c))
-
- d = uuid.uuid5(namepace,name) # 基于名称的SHA-1散列值
- print(d,type(d))
- # a003c11f-601a-11ed-955e-005056c00008
- # 7e9fc176-3b19-394a-9530-83391161f8e9
- # 2eaeb226-9737-4849-9768-242046b0e197
- # ad85ae8c-f638-56e0-b9fc-5d7a58009f62
(1)time模块:提供格式化时间,一般用于爬虫
- import time
- t = time.time()
- print('当前时间戳为:', t)
-
- ltime = time.localtime()
- print('本地时间为:',ltime) # 元组显示格式
-
- # 格式化时间
- print(time.strftime('%Y-%m-%d %H:%M:%S',time.localtime()))
- # 2022-11-09 18:46:01
- print(time.strftime('%a %b %d %H:%M:%S %Y',time.localtime()))
- # Wed Nov 09 18:46:01 2022
(2)datatime模块:处理时间
- import datetime as dt
- x = dt.date(2022,11,9) # yyyy-mm-dd
- y = dt.time(6,49,55,10)
- z = dt.datetime(2022,11,9,6,50,2)
- a = dt.timedelta(3,2,1,6)
- print(x,y,z,a,sep='\n')
- # 2022-11-09
- # 06:49:55.000010
- # 2022-11-09 06:50:02
- # 3 days, 0:00:02.006001
(3)calendar模块:日历模块
- import calendar
- print(calendar.calendar(2022)) # 全年日历
- print(calendar.month(2022, 12)) # 指定某年某月日历
- print(calendar.isleap(2022)) # 返回某年是否是闰年
- print(calendar.weekday(2022,11,9)+1) # 返回某年某月某日是星期几
- import hashlib
-
- obj = hashlib.md5() # 创建一个hsah对象
- obj.update('hello world'.encode('UTF-8')) # 返回hash值
- t = obj.hexdigest() # 返回加密串
- print(t) # 5eb63bbbe01eeed093cb22bb8f5acdc3