Запуск скрипта Python из ArcMap - PullRequest
0 голосов
/ 16 июля 2010

запускает скрипт Python из ArcMap ESRI, и он вызывает другой скрипт Python (или, по крайней мере, пытается его вызвать), используя модуль подпроцесса. Тем не менее, системное окно, в котором оно выполняется (окно DOS), появляется очень кратко и достаточно для того, чтобы я увидел, что есть ошибка, но слишком быстро исчезает, чтобы я мог ее прочесть и увидеть, что это за ошибка!

Кто-нибудь знает способ "приостановить" окно DOS или, возможно, направить вывод его в файл или что-то с помощью Python?

Вот мой код, который вызывает скрипт, который всплывает в окне DOS и содержит ошибку:

py_path2 = "C: \ Python25 \ python.exe" py_script2 = "C: \ DataDownload \ PythonScripts \ DownloadAdministrative.py" subprocess.call ([py_path2, py_script2])

Очень ценится!

Приветствия

Ответы [ 2 ]

0 голосов
/ 16 июля 2010

subprocess.call принимает те же аргументы, что и Popen.См. http://docs.python.org/library/subprocess.html

Вам особенно интересен аргумент stderr, я думаю.Возможно, что-то подобное поможет:

err = fopen('logfile', 'w')
subprocess.call([py_path2, py_script2], stderr=err)
err.close()

Вы могли бы сделать больше, если бы использовали Popen напрямую, не оборачивая его в call.

0 голосов
/ 16 июля 2010

Попробуйте выполнить команду raw_input() в конце вашего скрипта (это input() в Python 3).Это приостановит выполнение сценария и будет ждать ввода с клавиатуры.Если сценарий вызывает исключение, вам нужно его перехватить, а затем выполнить команду.

Кроме того, существуют способы чтения потоков stdout и stderr вашей команды, попробуйте просмотреть аргументы subprocess.Popen в http://docs.python.org/library/subprocess.html.

...