Динамические типы аргументов в Python + ArgparsePython

Программы на Python
Anonymous
Динамические типы аргументов в Python + Argparse

Сообщение Anonymous »

Я хочу создать CLI, используя Python и Argparse . CLI должен иметь параметры для указания списка значений, а также динамически указать тип type значений (str, int , float и т. Д.) В этом списке (все аргументы в списке имеют одинаковый тип). Значения в списке должны быть преобразованы в указанный тип. даже функции, которые обрабатывают список ввода аргументов). Мне было интересно, есть ли встроенный/более плавный/более канонический способ сделать это?
script.py:
import argparse

arg_type_dict = {t.__name__: t for t in [str, int, float]}

def main(
sweep_arg_type: str,
sweep_arg_vals: list,
):
arg_type = arg_type_dict[sweep_arg_type]
val_list = [arg_type(val_str) for val_str in sweep_arg_vals]

print(val_list)

if __name__ == "__main__":
parser = argparse.ArgumentParser()
parser.add_argument("--sweep_arg_vals", required=True, nargs="+")
parser.add_argument(
"--sweep_arg_type",
required=True,
choices=sorted(arg_type_dict.keys()),
)
args = parser.parse_args()

main(
args.sweep_arg_type,
args.sweep_arg_vals,
)
< /code>
Примеры использования: < /p>
python script.py -h
python script.py --sweep_arg_type int --sweep_arg_vals 0 1 10 -3
python script.py --sweep_arg_type float --sweep_arg_vals 0 1 10 -3
python script.py --sweep_arg_type float --sweep_arg_vals 1.2 3.4
python script.py --sweep_arg_type str --sweep_arg_vals abc def lmnop


Подробнее здесь: https://stackoverflow.com/questions/793 ... n-argparse

Вернуться в «Python»