0

ESRI の ArcMap 内から Python スクリプトを実行し、subprocess モジュールを使用して別の Python スクリプトを呼び出します (または少なくとも呼び出しを試みます)。ただし、それが実行されるシステム ウィンドウ (DOS ウィンドウ) は非常に短時間しか表示されず、エラーがあることを確認するのに十分ですが、実際にそれを読んでエラーが何であるかを確認するにはあまりにも早く消えます!

DOSウィンドウを「一時停止」する方法、またはPythonを使用してその出力をファイルまたは何かにパイプする方法を知っている人はいますか?

これは、DOS ウィンドウをポップアップし、エラーを含むスクリプトを呼び出す私のコードです。

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

とても有難い!

乾杯

4

2 に答える 2

0

raw_input()スクリプトの最後でコマンドを実行してみてください( input()Python 3の場合)。これにより、スクリプトが一時停止し、キーボード入力を待ちます。スクリプトで例外が発生した場合は、それをキャッチしてからコマンドを発行する必要があります。

また、コマンドのstdoutストリームとstderrストリームを読み取る方法があります。http://docs.python.org/library/subprocess.htmlでsubprocess.Popen引数を確認してみてください

于 2010-07-15T21:00:28.067 に答える
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

于 2010-07-15T21:03:16.330 に答える