Если я не могу использовать стандартный синтаксический анализатор (optparse или argparse) для своего приложения, тогда я использую функцию ast.literal_eval для анализа входных аргументов списка типов следующим образом:
import sys, ast
inputList = ast.literal_eval( sys.argv[1] )
print type( inputList )
print inputList
Предположим, что этот код хранится в файле testParser.py. Выполнив скрипт:
$ python testParser.py "[1,2,3,4, [123, 456, 789], 'asdasd']"
получаем следующий вывод:
<type 'list'>
[1, 2, 3, 4, [123, 456, 789], 'asdasd']
Итак, используя достаточно безопасную функцию ast.literal_eval и вставляя список в виде строки кода, мы получаем желаемый результат.
Полезные ссылки:
Использование функции python eval () и ast.literal_eval ()?
http://docs.python.org/2/library/functions.html?highlight=eval#eval