python(第五次作业)

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

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


# 利用有参装饰器实现
def log_name_time(name, time):
    def log(func):
        def wrapper(*args, **kwargs):
            print(f"函数名字:{func.__name__},调用时间:{time}")
            func(*args, **kwargs)

        return wrapper

    return log


@log_name_time("func.__name__", time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(time.time())))
def test():
    print("函数已执行")


test()

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

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

FILE_PATH = "log.text"


class WriteTime():
    def __init__(self, time):
        self.time = time

    def __call__(self, func):
        def wrapper(*args, **kwargs):
            with open(FILE_PATH, 'a+', encoding="utf-8") as f:
                f.write(f"写入字符串的时间为:{self.time},字符串为:")
            func(*args, **kwargs)

        return wrapper


@WriteTime(time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(time.time())))
def write_str(str):
    with open(FILE_PATH, 'a+', encoding="utf-8") as file:
        file.write(f"{str}\n")


if __name__ == '__main__':
    str = input("请输入一段字符:")
    write_str(str)

3.使用with语法完成文件的复制

"""
使用with语法完成文件的复制
"""
with open("log_copy.txt", "w+", encoding="utf-8") as f, open("log.text", "r", encoding="utf-8") as r:
    f.write(r.read())
    print(f"复制文件名 {r.name} , 复制后文件名 {f.name} ")

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

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

import pickle

# 模拟用户存储在数据库中的用户名和密码已经完成序列化
username_mysql = pickle.dumps("zhangsan")
password_mysql = pickle.dumps("123")


def login(username, password):
    return "success" if (
            username == pickle.loads(username_mysql) and password == pickle.loads(password_mysql)) else "failure"


if __name__ == "__main__":
    username = input("请输入用户名:").strip()
    password = input("请输入密码:").strip()
    print(login(username, password))

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值