Я вызываю скрипт Python со следующей командной строкой:
myscript.py --myopt="[(5.,5.),(-5.,-5.)]"
Вопрос в том, как преобразовать myopt в переменную списка. Моим решением было использовать optparse, обрабатывая myopt как строку и используя
(options, args) = parser.parse_args()
myopt = eval(options.myopt)
Теперь, потому что я использовал eval()
, я чувствую себя немного как Добби, домашний эльф, сознательно нарушивший заповеди великих волшебников (программистов) и желая самобичевать себя в наказании.
Но есть ли лучшие варианты для разбора списков, кортежей или списков кортежей из командной строки? .. Я видел решения, использующие split()
, но здесь это не сработает, так как это не простой список , Имейте также в виду, что это делается в контексте одноразовых научных вычислений без проблем с безопасностью - так что, возможно, eval()
здесь не так страшно? ..