【python】一个py的启动菜单

#!/usr/bin/python3
#-*-coding:utf-8 -*-

import os

class Menu:
    menulist = [{"name": "安装", "script": "setup.sh"},
                {"name": "升级", "script": "upgrade.sh"},
                {"name": "日志清理", "script": "del-alllog.sh"},
                {"name": "节点还原", "script": "rollback.sh"},
                {"name": "卸载", "script": "clean.sh"},
                {"name": "重启", "script": "restartAllApp.sh"},
                {"name": "创建分库规则", "script": "createDbRule.sh"}
                ]
    shell_path = "./shell/"

    def copyright(self):
        print(
            '''
            ********************************************************
            ****           *** 系统自动安装工具                ****
            **** Copyright(c) 1995--2099 ******   ****
            ********************************************************
            
            安装菜单:''')

    def printtile(self, repeatnum, flag):
        print(repeatnum * flag)

    def menuhead(self):
        self.printtile(80, "-")

    def menutail(self):
        self.menuhead()

    def formatoption(self, num, content):
        print("\t\t\t\t" + str(num) + ": " + content)

    def showmenu(self):
        for i, line in enumerate(self.menulist):
            self.formatoption(i, line['name'])

    def getlength(self):
        return len(self.menulist)

    def execmd(self, item):
        if int(item) > self.getlength()-1:
            print("选择的数字非法!")
            self.choosemenu()
        scriptsh = self.menulist[int(item)].get("script")
        cmd = self.shell_path + scriptsh
        print(cmd)
        os.system(cmd)

    def choosemenu(self):
        while True:
            title = '请输入菜单编号:' + '【0-' + str(self.getlength()-1) + '】,键入“Q”退出程序:'
            item = input(title)
            if not item:
                break
            elif item.isalpha() and (item.upper() == 'Q'):
                print("退出!")
                exit(1)
            else:
                self.execmd(item)


if __name__ == '__main__':
    menu = Menu()
    menu.menuhead()
    menu.copyright()
    menu.showmenu()
    menu.menutail()
    menu.choosemenu()

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值