Как разобрать аргументы при запуске интерфейса командной строки? - PullRequest
0 голосов
/ 22 апреля 2020

Я пытаюсь создать интерфейс командной строки, который работает до выхода. Что я хочу сделать, так это позволить командам пользовательского типа во время работы интерфейса просматривать функции или вызывать их.

Я написал небольшой класс, содержащий две функции, которые я хочу, чтобы пользователь мог вызывать: view_leagues и view_season.

Что я хочу сделать, это , в то время как интерфейс работает, вызовите функции, использующие функциональность argparse, чтобы иметь позиционные и необязательные аргументы.

Пример:

Пройдите ниже, когда программа работает: -v EN_PR, которая вызовет view_seasons() с аргументом EN_PR. После его запуска программы продолжают работать до тех пор, пока пользователь не выйдет из системы.

Как это вообще можно сделать?

class CLI_Stats():

    def __init__(self):
        self.header = self.header()
        self.description = self.description()
        self.commands = self.commands()
        self.leagues = {'EN_PR': ['2019/2020', '2018/2019'],
                        'EU_CL': ['2019/2020', '2018/2019']}


    @staticmethod
    def header():
        os.system('clear')
        print('\t','*'*60)
        print("\t\t***  Welcome - Football Stats generator  ***")
        print('\t','*'*60)

    @staticmethod
    def description():
        print('Interface to download: \t playerstats \t fixturestats \t team standing \n')
        print('Type "exit" to terminate shell')

    @staticmethod
    def commands():
        commands = {'View Leagues': '-v',
                    'View League Seasons': '-v LEAGUE',
                    'View Stats Type': '-s',
                    'Download stats': '-d LEAGUE SEASON TYPE',
                    'Help' : '-h' }
        for key, value in commands.items():
            print("{: <25} {}".format(key, value))
        print('\n')


    def view_leagues(self):
        leagues = self.leagues
        for league in leagues.keys():
            print("{: <10}".format(league), end="")
        print('\n')

    def view_seasons(self, league):
        if league in self.leagues:
            seasons = self.leagues[league]
            print(league,'seasons:')
            for season in seasons:
                print("{: <20}".format(season), end="")
            print('\n')
        else:
            print(league, 'is not avalible')
            print('\n')

    def parser(self):
        view_leagues = argparse.ArgumentParser(description='View Leagues that exist')
        view_leagues.add_argument('-v', action='store_const', const=self.view_leagues)
        args = view_leagues.parse_args()


def main():
    interface = CLI_Stats()
    while True:
        interface.parser()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...