python练习五

Title1:请实现一个装饰器,每次调用函数时,将函数名字以及调用此函数的时间点写入文件中

代码:

python 复制代码
import time
time = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())  # 获取当前的时间戳
# 定义一个有参装饰器来实现写入文件时加上时间和函数名
def tianjia(time):
    def logo(func):
        def wrapper():
            with open("file.text", "w", encoding="utf-8") as f:
                f.write(f"时间点{time},文件名:{func.__name__}\n")
                res = func()
                f.write(f"执行结果:{res}\n")

        return wrapper

    return logo



@tianjia(time)
def main():
    print("Hello")

if __name__ == '__main__':
    main()

Title2:编写一个装饰器,每执行一个函数,记录函数名称及函数执行时间,并写入log.text文件中

代码:

python 复制代码
import time
def w_file_time(time):
    def logo(func):
        def wrapper():
            with open("log.text", "a", encoding='utf-8') as f:
                f.write(time.strftime("%Y-%m-%d:%H--%M--%S", time.localtime()) + "\n函数名称:" + w_file_time.__name__)
                func()
        return wrapper
    return logo


@w_file_time(time)
def w_file():
    with open('test.txt', 'a') as f:
        f.write("这是一个函数")

if __name__ == '__main__':
    w_file()

Title3:使用with语法完成文件的复制

代码:

python 复制代码
with open("cope.text", 'a+', encoding='utf-8') as f, open("stickup.text", 'w+', encoding='utf-8') as t:
    f.write("这是一个复制的文件")  # 标识一下复制的文件
    t.write("粘贴后:" + f.read())  # 把查看到的内容写入别名为t的文件中同时加上一段文件进行标识
    print(t)

Title4:完成登录系统,登录时数据使用序列化和反序列化

代码:

python 复制代码
import pickle
# 定义一个初始的用户列表,由于是登录验证有用户名和密码,所以里面的元素是字典
users_list = [
    {"username": "John", "password": "123456"},
    {"username": "lisi", "password": "123456"},
    {"username": "wangwu", "password": "123456"},

]
# 打开文件进行序列化,是假设以上的users_list是在一个文件中的而不是在代码中
with open("user_list.text", "wb") as f:
    pickle.dump(users_list, f)


# 定义一个装饰器使得登录的函数可以实现序列化和反序列化
def serialization(func):
    def wrapper():
        with open('user_list.text', 'rb') as file:
            users = pickle.load(file)
        func(users)

    return wrapper


@serialization  # 通过装饰器来使得简单的一个登录需要序列化和反序列化
# 定义一个登录的函数
def loging(users):
    username = input("请输入你的用户名:")
    password = input("请输入你的密码:")
    # 判断用户名和密码是否与用户列表中的匹配
    for user in users:
        if user['username'] == username and user['password'] == password:  
            print('用户名和密码匹配成功')
            break
    else:
        print('用户名和密码匹配不成功')


if __name__ == '__main__':
    loging()
相关推荐
兮℡檬,10 分钟前
答题卡识别判卷
开发语言·python·计算机视觉
阆遤20 分钟前
利用TRAE对nanobot进行安全分析并优化
python·安全·ai·trae·nanobot
zdl68631 分钟前
Spring Boot文件上传
java·spring boot·后端
世界哪有真情33 分钟前
哇!绝了!原来这么简单!我的 Java 项目代码终于被 “拯救” 了!
java·后端
RMB Player35 分钟前
Spring Boot 集成飞书推送超详细教程:文本消息、签名校验、封装工具类一篇搞定
java·网络·spring boot·后端·spring·飞书
重庆小透明40 分钟前
【搞定面试之mysql】第三篇 mysql的锁
java·后端·mysql·面试·职场和发展
H_老邪1 小时前
Linux 与 Docker 常用命令
linux·运维·服务器·docker
RuoyiOffice1 小时前
企业请假销假系统设计实战:一张表、一套流程、两段生命周期——BPM节点驱动的表单变形术
java·spring·uni-app·vue·产品运营·ruoyi·anti-design-vue
鹤旗1 小时前
While语句,do-while语句,for语句
java·jvm·算法
雕刻刀1 小时前
ERROR: Failed to build ‘natten‘ when getting requirements to build wheel
开发语言·python