質問

私がする場合(例)

 open("/snafu/fnord")

Python(およびファイルが存在しない)では、トレースバックとメッセージが表示されます

 IOError: [Errno 2] No such file or directory: '/snafu/fnord'

上記の文字列をPythonのC API(つまり、Cプログラムに埋め込まれたPythonインタープリター)で取得したいと思います。コンソールに出力するのではなく、文字列として必要です。

PyErr_Fetch()を使用すると、例外のタイプオブジェクトと値を取得できます。上記の例では、値はタプルです:

 (2, 'No such file or directory', '/snafu/fnord')

PyErr_Fetch()から取得した情報からPythonインタープリターが表示する文字列に簡単な方法はありますか? (各例外タイプに対してそのような文字列を自分で作成する必要がないもの。)

役に立ちましたか?

解決

Python例外は" str()"を実行することで出力されると思います。関心のある書式設定された文字列を返す例外インスタンスで。 PyObject_Str() メソッドは次のとおりです。

https://docs.python.org/c-api/object.html

がんばって!

更新: PyErr_Fetch()によって2番目の要素が返される理由が少し混乱しています。私の推測では、「正規化されていない例外」が発生しています。 PyErr_NormalizeException()を呼び出して、そのタプルを" real"に変換する必要があります。希望どおりの文字列として自分自身をフォーマットできる例外。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top