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()
相关推荐
历程里程碑7 小时前
Linux 3 指令(3):进阶指令:文件查看、资源管理、搜索打包压缩详解
linux·运维·服务器·c语言·数据结构·笔记·算法
十六年开源服务商7 小时前
外贸WordPress用户反馈分析与运营维护
运维·服务器·数据库
invicinble7 小时前
关于对后端开发工程师,在项目层面的基本需求与进阶方向
java
hhy_smile7 小时前
Python environment and installation
开发语言·python
懒鸟一枚7 小时前
Java17新特性详解
java
戌中横7 小时前
JavaScript 对象
java·开发语言·javascript
crossaspeed7 小时前
面向对象的三大特征和反射(八股)
java·开发语言
junziruruo7 小时前
BAT方法在LasHeR上进行训练,生成了相关训练模型,在RGBT234的可视化操作过程(Linux)
linux·运维·服务器
极安代理7 小时前
代理地址IP怎么获取和使用?一文讲清
服务器·网络·tcp/ip
zfj3217 小时前
java synchronized关键字用法和底层原理
java·开发语言·轻量级锁·重量级锁·偏向锁·线程同步