2010-07-15 6 views
0

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

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

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

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

Очень ценим!

Приветствия

ответ

0

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

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

0

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.

Смежные вопросы