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()
相关推荐
我命由我123451 小时前
Java NIO 编程 - NIO Echo Server、NIO Client(NIO 异步客户端、NIO Selector 异步客户端)
java·开发语言·网络·java-ee·intellij-idea·intellij idea·nio
嗯、.1 小时前
使用Itext9生成PDF水印,兼容不同生成引擎的坐标系(如: Skia、OpenPDF)
java·pdf·itextpdf·openpdf·坐标变换矩阵
程序员三藏2 小时前
Jmeter自动化测试
自动化测试·软件测试·python·测试工具·jmeter·测试用例·接口测试
断剑zou天涯4 小时前
【算法笔记】窗口内最大值或最小值的更新结构
java·笔记·算法
吴佳浩4 小时前
Langchain 浅出
python·langchain·llm
smj2302_796826524 小时前
解决leetcode第3753题范围内总波动值II
python·算法·leetcode
mortimer4 小时前
破局视频翻译【最后一公里】––从语音克隆到口型对齐的完整工程思路
python·github·aigc
m***66734 小时前
SQL 实战—递归 SQL:层级结构查询与处理树形数据
java·数据库·sql
鲸沉梦落6 小时前
Java中的Stream
java
yihuiComeOn6 小时前
[源码系列:手写Spring] AOP第二节:JDK动态代理 - 当AOP遇见动态代理的浪漫邂逅
java·后端·spring