Я пытаюсь создать интерфейс командной строки, который работает до выхода. Что я хочу сделать, так это позволить командам пользовательского типа во время работы интерфейса просматривать функции или вызывать их.
Я написал небольшой класс, содержащий две функции, которые я хочу, чтобы пользователь мог вызывать: 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()