十二.Python文件操作逻辑与解耦

Python文件操作逻辑与解耦

import os  #导入os模块
tag=False  #设置全部变量tar

#解耦
#文件查询
def file_fetch(name):
    res = []
    with open("data", "r", encoding="utf-8") as fi: #以读的模式打开文件
        for i in fi:             #循环文件内容
            if i.find(name) > -1:#检索一行内容是否与name匹配
                res.append(i)    #查询到内容添加到res列表
    return res                  #返回查询到的内容列表
#文件修改
def file_change(*args):
    res = select(args[0])       #获取要查询的内容
    args = list(args)           #将元组转换为列表
    args[0] = res               #将查询到的内容添加到res列表
    with open("data", "r", encoding="utf-8") as f1, open("data1", "w", encoding="utf-8") as f2:#分别以读的模式打开data文件,以写的方式打开data1文件
        for i in f1:                    #循环data的内容
            tag = False                 #初始化tag
            for k in args[0]:           #循环查询要修改的内容
                if i == k:              #判断是否是要修改的内容
                    tag = True          #符合条件,改变tag
                    f2.write(args[1][(args[0].index(k))])#将修改后的内容写入到data1文件
                    break                 #跳出循环
            if tag == False:              #判断tag是否改变
                f2.write(i)               #内容不是要修改的内容,直接将data内容写入到data1
    os.remove("data.bak")                #移除data.bak文件
    os.rename("data", "data.bak")       #将data修改为data.bak
    os.rename("data1", "data")          #将修改后的文件改为data
#文件删除
def file_delete(res):
    with open("data","r",encoding="utf-8") as f,open("data1","w",encoding="utf-8") as f1:       #分别以读的模式打开data文件,以写的方式打开data1文件
        for i in f:                 #循环data文件内容
            if i!=res[0]:           #判断遍历出的内容不是要删除的内容
                f1.write(i)         #将data文件写入到data1文件
        f.close()                   #关闭data文件流
        f1.flush()                  #将data1文件流刷入到硬盘
        f1.close()                  #关闭data1文件流
        if os.path.exists("data.bak"):#判断是否存在data.bak
            os.remove("data.bak")       #data.bak存在就删除
        os.rename("data","data.bak")    #将data文件改名为data.bak
        os.rename("data1","data")       #将data1文件改名为data






#查询
def select(name):
    return file_fetch(name)         #调用file_fetch()查询出内容并将内容返回
#修改
def change(*args):
    file_change(*args)              #调用file_change()修改文件内容
#删除
def delete(name):
    res=select(name)                #查询要修改的内容
    file_delete(res)                #在文件里删除参数内容
    print("\033[1;41m%s\033[0m删除成功!" % name)  #输出内容删除成功
#添加
def add(*args):
    with open("data","a",encoding="utf-8") as f:   #以追加的方式打开data文件
        for i in args:                              #遍历args参数文件内容
            f.writelines(i)                         #将遍历的内容追加到data文件

#判断调用方式是否是本地调用
if __name__=="__main__":
     #查询内容
     res=select("xiaoming")
     #修改小明用户的数据:
     change("小明",["user:Marry\n","    user_name:Marry,user_password:123456,user_add:上海"])
     #添加Marry3用户的数据
     add(["\nuser:Marry3\n","    user_name:Marry3,user_password:1234563,user_add:上海3"])
     #删除Marry3用户的内容
     delete("Marry3")

猜你喜欢

转载自blog.csdn.net/qq_39663113/article/details/85222959