2010-07-15 144 views
0

從ESRI的ArcMap中運行一個python腳本,它使用子進程模塊調用另一個python腳本(或至少嘗試調用它)。但是,它在DOS窗口中執行的系統窗口只是非常短暫地顯示出來,足以讓我看到有一個錯誤,但是消失得太快而無法真正閱讀它並查看錯誤是什麼!從ArcMap運行一個python腳本

有誰知道一種方法來「暫停」DOS窗口或可能管道輸出到一個文件或使用Python的東西嗎?

這裏是我的代碼,它彈出的DOS窗口中有錯誤的腳本:

py_path2 = 「C:\ Python25 \ python.exe」 py_script2 =「C:\數據下載\ PythonScripts \ DownloadAdministrative.py「 subprocess.call([py_path2,py_script2])

非常感謝!

乾杯

回答

0

試着在你的腳本到底在做一個raw_input()命令(這是input()在Python 3)。 這將暫停腳本並等待鍵盤輸入。如果腳本引發異常,則需要捕獲該異常,然後發出命令。

此外,還有一些方法可以讀取命令的stdout和stderr流,請嘗試查看http://docs.python.org/library/subprocess.html的subprocess.Popen參數。

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周圍包裹它。