У меня есть функция в файле, который принимает различные типы параметров (междунар, строки, словари, списки ...)Casting Входные аргументы для исправления типа
Обычно я называю эту функцию из другого, передавая право параметры, но я хотел бы также назвать это с консоли (для целей тестирования)
Проблема в том, что входные аргументы хранятся в виде строк, поэтому я не могу напрямую передать их функции.
Есть ли способ автоматически передавать параметры с консоли на функцию, поддерживающую правильный формат?
import sys
def myfunction(mystring, myint, mydict, mylist):
# check that types are correct
assert type(mystring) is str
assert type(myint) is int
assert type(mydict) is dict
assert type(mylist) is list
# print input parameters
print mystring
print myint
print mydict
print mylist
def main(args):
print args
myfunction(*args) # pass the parameters to the function
if __name__ == '__main__':
main(sys.argv[1:]) # discard 1st element which is the filename
Для вызова моей функции из консоли я просто делаю:
python myfile.py "hello" 5 {'age':30} [1,2,3,4]
assert
Первых succeds, так как он ожидает строку, а второй один не удается, так как он ожидает Int.
print args
от основной функции возвращает ['hello', '5', '{age:30}', '[1,2,3,4]']
(поэтому аргументы были правильно проанализированы, но они хранятся в виде строк).
Мне просто нужно преобразовать их в нужный формат.
Любые идеи?
Возможно, вы можете использовать [argparse] (https://docs.python.org/3/ библиотека/argparse.html) библиотека – Wolkodav