Я пишу простое приложение на Python, использующее модуль cmd
для обеспечения интерфейса типа CLI. Команды, предоставляемые моим CLI, имеют списки параметров, которые сильно различаются. Каждый обработчик команды получает строковый аргумент, содержащий часть строки, которая содержит аргументы; Я планирую разбить их на кортежи, используя shlex.split
. Впоследствии я ищу наиболее Pythonic способ взять этот набор строк, проверить, что они правильно сформированы, и преобразовать их в набор четко определенных числовых типов.
Пример: У меня есть функция foo
, которая принимает 3 аргумента: первый - это путь к файлу на диске, второй - значение с плавающей запятой, а третий - целое число, как:
foo /home/jason/file.bin 123.456 123456
Мне бы хотелось, чтобы это был точный способ указать, что-то похожее на использование C sscanf()
со строкой форматирования "%s %f %d"
(я понимаю проблемы обработки пробелов, присущие этому подходу; это просто иллюстрация).
Я знаю, что могу добиться этого, написав стандартный код для каждой функции-обработчика, которая вызывает int()
, float()
и т. Д. И соответствующим образом перехватывает исключения. Просто кажется, что должен быть более чистый способ сделать это.