У меня есть один фрагмент кода Какао, который я написал и который содержит XML-файл, содержащий ограничивающие прямоугольники, которые затем рисуются поверх видео (каждый блок имеет связанный кадр).Программа Какао предназначена для запуска из командной строки (и принимает все ее параметры в качестве аргументов командной строки)
Я могу нормально запустить программу с любым документом XML.Однако я сталкиваюсь с проблемами, когда пытаюсь запустить программу из скрипта Python.Например:
with file("test.xml") as temp:
temp.write(doc.toprettyxml())
# cval is my cocoa program to call, the other arguments are given to the Python script and parsed with optparser
command = ["./cval", "-o", options.output, "-i", str(options.interval), "-s", "%dx%d" % (options.width, options.height), "-f", str(options.frames), "-x", temp.name]
subprocess.call(command)
Иногда это приводит к сбою моего 'cval', а иногда нет (изменение одного числа в документе XML может изменить его поведение).Я также могу убедиться, что он ломается при попытке прочитать элемент XML, которого там нет.Только я могу открыть файл «test.xml» и убедиться, что этот элемент действительно существует.
Однако, если я сам потом запускаю «cval» (вне скрипта Python) с «test.xml»работает нормально.Это заставляет меня поверить, что когда я выполняю subprocess.call, происходит нечто странное, но я не уверен, что это может быть.У меня есть другие миксы Cocoa / Python, которые выполняют совершенно разные задачи (то есть не используют XML), которые также произвольно демонстрируют странное поведение, но имеют более сложный характер.
Я надеялся, что кто-то также столкнулся с этой проблемойили может знать следующий шаг в отладке этой странности.