Я не совсем уверен, поможет ли это, но до сих пор я писал оболочку, которая принимает аргументы из XML, заданные веб-интерфейсом, а затем передает их в команду:
Очевидно, принимает более сложные строки аргументов, но для примера:
def __main__():
parser = optparse.OptionParser()
parser.add_option( '-Q', '--ibmax', dest='ibmax', help='' )
(options, args) = parser.parse_args()
if options.ibmax != 'None' and int( options.ibmax ) >= 1:
ibmax = '--bmax %s' % options.ibmax
cmd1 = Popen([another.py, '-Q "%s"' % (options.ibmax),], stdout=PIPE).communicate()[0]
process = subprocess.Popen(cmd1, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
В зависимости от определенных флагов в моем веб-интерфейсе, в список аргументов добавляются дополнительные параметры, и поэтому выполняется другая команда. Добавьте каждую опцию команды в анализатор и затем проверьте значение команды -Y или -S, чтобы установить переменные и изменить, какую команду вам нужно передать.
Надеюсь, это поможет, я не профессионал в Python, это просто работает для меня.