这节记录一些内置模块的使用
目录
hashlib模块,,加密用
json模块
os模块
一个实用的案例:
os模块的找文件的操作
随机生成random模块
时间相关模块
time,datetime
hashlib模块,,加密用
以md5加密示例:
import hashlib
#对数据加密
data="你好啊世界"
obj=hashlib.md5() #生成加密对象
obj.update(data.encode('utf-8')) #加密
res=obj.hexdigest() #返回结果
print(f'加密后为:{res}')
小案例:
用户输入用户名,密码,,加密之后保存在文件里
类似于注册功能
#内置模块,hashlib #md5加密 import hashlib #对数据加密 def ens(data): obj = hashlib.md5() # 生成加密对象 obj.update(data.encode('utf-8')) # 加密 res = obj.hexdigest() # 返回结果 return res #print(f'加密后为:{res}') def run(): user=input("请输入用户名:") password=input("请输入密码:") newpassword=ens(password) #做个格式化 line="{}->{}\n".format(user,newpassword) #写到文件 fd=open("tt.txt",mode="a",encoding='utf-8') fd.write(line) fd.close() if __name__=='__main__': run()
那对于登录怎么办呢?
用户输入用户名,密码,,都是明文,
函数对密码进行加密,完了读取保存的文件,进行加密之后的密文对比就行
就是对run函数稍微修改一下就行:
import hashlib
#对数据加密
def ens(data):
obj = hashlib.md5() # 生成加密对象
obj.update(data.encode('utf-8')) # 加密
res = obj.hexdigest() # 返回结果
return res
#print(f'加密后为:{res}')
def run():
user=input("请输入用户名:")
password=input("请输入密码:")
newpassword=ens(password)
fd=open("tt.txt",mode="r",encoding="utf-8")
some=fd.read()
fd.close()
#先split 以\n分片,在strip去除空格 \n
data_list=some.strip().split('\n')
for item in data_list:
name,word=item.split('->') #[用户名,密码]
if name==user and word==newpassword:
print("登录成功")
break
else:
print("失败")
break
if __name__=='__main__':
run()
md5加密加盐,更保险哦~
json模块
1、dumps:把字典转成json字符串
2、loads:把json字符串转成字典
import json
test_dict = {'a':1, 'b':2}
#把字典转成json字符串
json_text = json.dumps(test_dict)
print(type(json_text))
print(json_text)
#把json字符串转成字典
json_dict = json.loads(json_text)
print(type(json_dict))
print(json_dict)
python里的json模块只能序列化下面这些格式,,别的对象想要json,就需要做转换
os模块
获取绝对路径 ,abspath,,没有会自动创建
路径拼接:join
判断文件/文件夹存在否:exists
创建文件夹:makedirs
#获取文件项目的绝对路径
v=os.path.abspath("tst.py")
print(v)
#路径的拼接
#只是做路径拼接,,不管你文件在不在
file_txt=os.path.join("file","ff.txt")
print(file_txt)
#文件或文件夹是否存在
file_txt=os.path.join("file","ff.txt")
file1_txt=os.path.join("Test","tt.txt")
v1=os.path.exists(file_txt)
v2=os.path.exists(file1_txt)
print(v1)
print(v2)
#创建文件夹
os.makedirs(file_txt)
一个实用的案例:
创建以用户名命名的文件,里面写入用户密码
import os
def run():
user=input("输入用户名:")
pws=input("输入密码:")
#创建db目录
folder_path=os.path.abspath("db")
if not os.path.exists(folder_path):
os.makedirs(folder_path)
#在db目录下写内容
file_path=os.path.join(folder_path,"{}.txt".format(user))
fd=open(file_path,mode='w',encoding='utf-8')
fd.write(pws)
fd.close()
if __name__=='__main__':
run()
os模块的找文件的操作
查看路径下所有文件:os.listdir(),返回一个列表对象,只能找一级,里面如果有文件夹,也能找到文件夹,但是找的的这个文件夹里面的下级文件就找不到了
ij=os.listdir(os.path.abspath('E:\python_code\Test'))
print(ij)
os.walk 能全找出来,,意思就是会进到下级文件夹找文件,所以后面能用for循环遍历找
ipj=os.walk(os.path.abspath('E:\python_code\Test'))
for ins,b,ons in ipj:
for name in ons:
file_tmp=os.path.join(ins,name)
print(file_tmp)
随机生成random模块
random.randint随机生成数字
vs=random.randint(1000,9999)
print(vs) #1000-9999
随机获取任意一个东西,什么都能获取,,数字,字符串,函数啥的都可以
random.choice
dis=[45,12,3,37,59]
pl=random.choice(dis)
print(pl)
random.shuffle 打乱数据用的,,
dis=[1,2,3,4,5]
random.shuffle(dis)
print(dis)
random.sample
random.sample的函数原型为:random.sample(sequence, k),从指定序列中随机获取指定长度的片断。sample函数不会修改原有序列。 如果k大于sequence元素个数的话会报错。
可以用于字典,可以充当随机取一个的作用
disp={'sa':"sap",45:"as82",'pls':45111}
pl=random.sample(disp.keys(),1)
print(pl)
时间相关模块
time,datetime
time一般用在时间戳这块
v1=time.time()#获取时间戳
print(v1)
time.sleep() 睡眠
datetime获取当前时间
#获取本地当前时间
vs=datetime.datetime.now()
print(vs)
datetime方便时间的加减
datetime返回的是一个对象
vs2=vs+datetime.timedelta(days=7,hours..)
print(vs2)