У меня есть старое приложение для карточек, которое я сделал, и которое я перепрофилировал для некоторого aws исследования по сертификации. Я написал в этом году go и пересмотрел этот код, и одно из этих изменений касалось использования click
над argparse
, но у меня возникают некоторые проблемы с использованием click
. Мой код ниже (за исключением нескольких дополнительных функций):
Идея состоит в том, что load_deck()
необходимо прочитать аргумент file
. Я пытался это сделать, передав load_deck()
аргумент file
через main()
Наконец, выполнение этого кода говорит о том, что в вызове Flashcards().main()
, main()
отсутствует позиционный аргумент сам. Я думаю, что это проблема с тем, как я использую click
.
import os
import random
import sys
import click
import keyboard
import ruamel.yaml
class Flashcards:
"""
pass
"""
def __init__(self):
self.deck = ruamel.yaml.YAML()
self.card = ['key', 'value']
def load_deck(self, file):
"""
pass
"""
with open(file, mode='r') as deck:
self.deck = self.deck.load(deck)
@click.command()
@click.option('-f', '--file', default='aws.yaml', help='specifies yaml file to use')
@click.option('-r', '--reverse', default=False, help='displays values prompting user to guess keys')
def main(self, file, reverse):
"""
pass
"""
self.load_deck(file)
if reverse is True:
self.deck = [
[card[1], card[0]
] for card in self.deck]
os.system('clear')
print('Press [SPACEBAR] to advance. Exit at anytime with [CTRL] + [C]\n'
'There are {} cards in your deck.\n'.format(len(self.deck)))
try:
while True:
self.read_card()
self.flip_card()
except KeyboardInterrupt:
# removes '^C' from terminal output
os.system('clear')
sys.exit(0)
if __name__ == "__main__":
Flashcards().main()
Программа читает файл yaml в следующем формате (ранее это было приложение spani sh flashcard):
bajar: to descend
borrar: to erase
contestar: to answer