欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

python学习-44 程序的解耦 (不是特别懂的,回头在复习)

程序员文章站 2022-06-15 13:29:36
import os def file_handler(backend_data,res=None,type='fetch'): # 查询功能 if type == 'fetch': with open('test_new.txt','r') as read_f: ret = [] ... ......
import os

def file_handler(backend_data,res=none,type='fetch'):                  # 查询功能
    if type == 'fetch':
         with open('test_new.txt','r') as  read_f:
             ret = []
             tag = false
             for read_line in  read_f:
                if read_line.strip() == backend_data:
                    tag = true
                    continue

                if tag and read_line.startswith('backend'):
                    break

                if tag:
                    print(read_line,end='')
                    ret.append(read_line)
         return ret
    if type == 'change':                                          # 修改功能
        with open('test_new.txt', 'r') as read_f, \
                open('test_new.txt_new', 'w') as write_f:
            tag = false
            has_write = false
            for read_line in read_f:
                if read_line.strip() == backend_data:
                    tag = true
                    continue
                if tag and read_line.startswith('backend'):
                    tag = false
                if not tag:
                    write_f.write(read_line)
                else:
                    if not has_write:
                        for record in res:
                            write_f.write(record)
                        has_write = true

        os.rename('test_new.txt', 'test_new.txt.bak')
        os.rename('test_new.txt_new', 'test_new.txt')
        os.remove('test_new.txt.bak')

def fetch(data):
    print('您输入的信息是:',data)
    backend_data= 'backend %s' % data
    return file_handler(backend_data)

def change(data):
    print('开始修改功能')
    print('用户输入的信息是:',data)
    backend=data[0]['backend']
    backend_data='backend %s' %backend
    old_server_record ='%s server %s %s\n'%(*9,data[0]['record']['server'])
    new_server_record = '%s server %s %s\n' % (*9, data[1]['record']['server'])
    print('您想要修改的记录:',old_server_record)
    res=fetch(backend)
    print(res)
    if not res or old_server_record not in res:
        return '您要修改的信息不存在'
    else:
        index = res.index(old_server_record)
        res[index]=new_server_record

    res.insert(0,'%s\n' %backend_data)
    file_handler(backend_data,res=res,type='change')


if __name__== '__main__':
    msg='''
    1:查询
    2:修改
    5:退出
    '''
    msg_dic={
        '1':fetch,
        '2':change
    }
    while true:
        print(msg)
        choose = input('请输入您要的选项:').strip()
        if not choose: continue
        if choose == '5':break

        data = input('请输入您的信息:').strip()
        if choose != '1':
            data = eval(data)


        res = msg_dic[choose](data)            # 查询到的结果放到一个列表里输出
        print('最终的结果:',res)