Python基础第12天

  一:三级菜单直接退出的方法(tag的用法)

tag=True
while tag:
    print('level1')
    choice=input('level1>>: ').strip()
    if choice == 'quit':break
    if choice == 'quit_all': tag = False
    while tag:
        print('level2')
        choice=input('level2>>: ').strip()
        if choice == 'quit': break
        if choice == 'quit_all': tag = False
        while tag:
            print('level3')
            choice = input('level3>>: ').strip()
            if choice == 'quit': break
            if choice == 'quit_all':tag=False

二:对文件处理 (增删改查)

import os
def file_handler(backend_data,res='None',type='fetch'):
    if type == 'fetch':
        with open('renkoupucha','r') as read_f:
            tag=False  #标识一种状态
            ret=[]
            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
    elif type == 'change':
        with open('renkoupucha', 'r')as read_f, 
                open('renkoupucha_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('renkoupucha', 'renkoupucha.bak')
        os.rename('renkoupucha_new', 'renkoupucha')
        os.remove('renloupucha.bak')

def fetch(data):
    backend_data='backend %s' %data
    return file_handler(backend_data)



def add():
    pass

def change(data):
    # print('这是修改功能')
    print('用户输入的数据是',data)# data[0]#文档当中的一条记录
    backend=data[0]['backend']
    backend_data='backend %s' %backend

    old_server_recored='%s server %s %s weight %s maxconn %s'%(' '*8,data[0]['record']['server'],
                                                               data[0]['record']['server'],
                                                               data[0]['record']['weight'],
                                                               data[0]['record']['maxconn'],)
    new_server_recored = '%s server %s %s weight %s maxconn %s' % (' ' * 8, data[1]['record']['server'],
                                                                   data[1]['record']['server'],
                                                                   data[1]['record']['weight'],
                                                                   data[1]['record']['maxconn'],)
    print('用户想要修改的记录是',old_server_recored)
    res = fetch(data[0]['backend'])
    print(res)
    if not res or old_server_recored not in res:
        return '修改记录不存在'
    else:
        index=res.index(old_server_recored)
        res[index]=new_server_recored    #修改的列表
        res.insert('%s
' %backend_data )

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

def delete():
    pass

if __name__=='__main__':
    msg='''
    1:查询
    2:添加
    3:修改
    4:删除
    5:退出
    '''
    msg_dic={
        '1':fetch,
        '2':add,
        '3':change,
        '4':delete,
    }
    while True:
        print(msg)
        choice=input('请输入你的选项: ').strip()
        if not choice:continue
        if choice =='5':break

        data=input('请输入你的数据:').strip()
        if choice != '1':
            data=eval(data)
        res=msg_dic[choice](data)
        print('最终结果',res)

    

原文地址:https://www.cnblogs.com/xyd134/p/6492986.html