1

のサードパーティ モジュールを使用する Python スクリプトを作成していますGDAL。関数はGDAL、エラーが発生したときに例外を発生させませんが、メッセージを に送信しますstdout。通常、GDAL関数でエラーが発生してもプロセスを停止する必要はなく、エラーが発生したことを知る必要はありません。

stdoutコンソールに出力される前に、送信されているメッセージを傍受する方法はありますか? GDALメッセージは、私が独自のコードで提供したメッセージに干渉します。

4

1 に答える 1

1

"Python Gotchas"で説明されているように、次のように を使用して例外を有効にすることができますgdal.UseExceptions()

from osgeo import gdal

dsrc = gdal.Open('nonexist')
# ... silence

gdal.UseExceptions()

dsrc = gdal.Open('nonexist')
# Traceback (most recent call last):
#   File "<interactive input>", line 1, in <module>
# RuntimeError: `nonexist' does not exist in the file system,
# and is not recognised as a supported dataset name.

その後、常にtry exceptブロックを使用して実際のエラー メッセージ文字列を取得できます。

try:
    dsrc = gdal.Open('nonexist')
except RuntimeError as e:
    print(str(e))

エラーメッセージが出力されます:

「nonexist」はファイル システムに存在せず、サポートされているデータセット名として認識されません。

于 2013-10-05T06:52:43.987 に答える