J'ai un projet sur lequel je travaille et je voulais passer les indicateurs possibles de l'entrée utilisateur (exemple "-s") dans une liste booléenne à partir de laquelle je peux trouver les options spécifiques que l'utilisateur a demandées.

Mon code actuellement:

def run():
    running = True
    while running:

        user_input = input()
        dir_path = find_file_name(user_input[2:])
        flags = get_action(dir_path[1])
        file_dump = []

        options = [False] * 6

        if user_input[0] == "Q":
            running = False
            break

        elif user_input[0] == "L":
            options[0] = "-r" in flags
            options[1] = "-f" in flags
            options[2] = "-s" in flags
            options[3] = "-e" in flags

Bien que cette technique fonctionne, j'espérais qu'il y aurait un meilleur moyen de faire la dernière partie avec les options définies en fonction des indicateurs contenus dans l'entrée. Je ne suis pas non plus sûr à 100% que ce soit un bon moyen d'utiliser une méthode run(). Toute suggestion serait utile! Merci!

0
Alexander Oroudjev 3 oct. 2021 à 01:53

2 réponses

Meilleure réponse

Jetez un œil au module standard de la bibliothèque argparse. Il fait ce dont vous avez besoin et bien plus encore.

voir les documents

0
jetpack_guy 2 oct. 2021 à 23:01

Comme l'a dit jetpack_guy, argparse est le meilleur moyen de faire quelque chose comme ça. Cette bibliothèque a beaucoup de fonctionnalités, mais voici comment créer des booléens à partir d'arguments dont vous avez besoin.

import argparse

parser = argparse.ArgumentParser()
parser.add_argument('-r', action='store_true')
parser.add_argument('-f', action='store_true')
parser.add_argument('-s', action='store_true')
parser.add_argument('-e', action='store_true')

args = parser.parse_args()

print(args.r)
print(args.f)
print(args.s)
print(args.e)

python test.py -r produirait r: True, f: False, s: False, e: False

python test.py -r -f -s produirait r: True, f: True, s: True, e: False

python test.py -rsf produirait r: True, f: True, s: True, e: False

0
Andrew-Harelson 2 oct. 2021 à 23:12