Python心经(4)

文章介绍了Python的几个核心内置模块的使用,包括hashlib模块的md5加密,json模块的数据序列化,os模块的文件操作如找文件,以及random模块的随机数生成。同时,文章提供了用户注册和登录的简单实现,强调了安全性和实用性。
摘要由CSDN通过智能技术生成

这节记录一些内置模块的使用

目录

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)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

BearPot

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值