Посмотрите на список sys.argv[1:]
. Я ожидаю, что это будет
['-c', '-i', 'D:\Temp\dir1', '-d', 'D:\Temp\out.db', '-t', 'D:\Temp\ddl.sql', '-i', 'D:\Temp\dir2']
Обратите внимание, что '-c -i' разделены. Поскольку сокращения допускаются, -c
принимается как сокращение для этого флага '-c -i'. Но за этой строкой следуют '-i' и 'D: ...'. Это 2 аргумента, а не только один. Отсюда и ошибка.
Да, вы можете заключить в кавычки "-c -i", чтобы оболочка не разделяла его, но даже это не работает корректно. Я не вижу смысла указывать такой флаг. Он не основан на ранее определенном действии '-i'.
In [113]: parser.parse_args(['-c -i', 'D:\Temp\dir1', '-d', 'D:\Temp\out.db',
'-t', 'D:\Temp\ddl.sql', '-i', 'D:\Temp\dir2'])
Out[113]: Namespace(d='D:\\Temp\\out.db', i='D:\\Temp\\dir2',
t='D:\\Temp\\ddl.sql', **{'c _i': 'D:\\Temp\\dir1'})
In [122]: getattr(Out[113],'c _i')
Out[122]: 'D:\\Temp\\dir1'