python读写及装饰器综合练习

目录

a.写:

a.1:以写的方式打开文件stu_info.txt并向文件中写入(姓名-性别-年龄):每个一行

b.读:

b.读:以读的方式打开文件stu_info.txt,读取文件的每一行内容,并格式化输出,输出格式:居中对齐

装饰器:

a.装饰器:要求定义一个装饰器(通用),可以打印出被装饰函数的运行时间

满足题意的函数

证明


a.写:

a.1:以写的方式打开文件stu_info.txt并向文件中写入(姓名-性别-年龄):每个一行

使用write

方法一 :
list_data = [   "zhangsan-male-20",
                "lisi-female-21",
                "wangwu-male-20"
            ]
file_data = open("stu_info", "w", encoding='utf-8')
str_data = file_data.write("\n".join(list_data))
file_data.close()
方法二:
list_data = [   "zhangsan-male-20",
                "lisi-female-21",
                "wangwu-male-20"
            ]
with open("stu_info", "w") as file_data:
    print(file_data.write("\n".join(list_data)))

 使用writelines

方法一:
list_data = ["zhangsan-male-20\n","lisi-female-21\n","wangwu-male-20\n" ]
file_data2 = open("stu_info", "w")
str_data2 = file_data2.writelines(list_data)
file_data2.close()
 方法二:
list_data = ["zhangsan-male-20\n","lisi-female-21\n","wangwu-male-20\n" ]
with open("stu_info", "w") as file_data2:
    print(file_data2.writelines(list_data))

b.读:

b.读:以读的方式打开文件stu_info.txt,读取文件的每一行内容,并格式化输出,输出格式:居中对齐

print(f"{'name':^20}{'gender':^10}{'age':^10}")
file_data = open("stu_info", "r")
str_data = file_data.readlines()
file_data.close()
# print(str_data, type(str_data))
for i in str_data:
    strip_data = i.strip()
    split_data = strip_data.split("-")
    # print(split_data, type(split_data))
    print(f"{split_data[0]:^20}{split_data[1]:^10}{split_data[2]:^10}")

'''
        name          gender     age    
      zhangsan         male       20    
        lisi          female      21    
       wangwu          male       20 
'''
'''

装饰器:

a.装饰器:要求定义一个装饰器(通用),可以打印出被装饰函数的运行时间

满足题意的函数

import time

def decorator(arg):
    def outer(func):
        def inner(*args, **kwargs):
            befor_time = time.time()
            func(*args, **kwargs)
            after_time = time.time()
            run_time = befor_time - after_time
            print(run_time)
        return inner
    return outer

@decorator("debug")

证明:装饰打印hello

import time

def decorator(arg):
    def outer(func):
        def inner(*args, **kwargs):
            befor_time = time.time()
            func(*args, **kwargs)
            after_time = time.time()
            run_time = befor_time - after_time
            print(run_time)
        return inner
    return outer

@decorator("debug")
def print_arg(*args, **kwargs):
    time.sleep(2)
    print("hello")
    # print(key=1)

print_arg(1, 3, key=2)
装饰一个传关键字参数的函数:
import time
def decorator(arg):
    def outer(func):
        def inner(*args, **kwargs):
            befor_time = time.time()
            func(*args, **kwargs)
            after_time = time.time()
            run_time = befor_time - after_time
            print(run_time)
        return inner
    return outer

@decorator("debug")
def print_key(*, key="vaule"):
    print(key)
    time.sleep(2)


print_key(key=1)
装饰一个可以运算打印三数之和的函数
import time
def decorator(arg):
    def outer(func):
        def inner(*args, **kwargs):
            befor_time = time.time()
            func(*args, **kwargs)
            after_time = time.time()
            run_time = befor_time - after_time
            print(run_time)
        return inner
    return outer

@decorator("debug")
def print_sum(arg1, arg2, arg3, arg4):
    arg = arg1 + arg2 + arg3 + arg4
    print(arg)
    time.sleep(2)


print_sum(1, 2, 3, 4)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

爱玩网络的小石

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

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

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

打赏作者

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

抵扣说明:

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

余额充值