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)

猜你喜欢

转载自blog.csdn.net/2302_77035737/article/details/130661075