ben yaparsanız (örneğin)Python C API: özel durumun dize temsili nasıl alınır?
Pythonopen("/snafu/fnord")
(ve dosya yok), bir Traceback ve Python en yukarıdaki dize almak istiyorum
IOError: [Errno 2] No such file or directory: '/snafu/fnord'
mesajı alıyorum C API (bir C programına gömülmüş bir Python yorumlayıcısı). Konsola çıkış olarak değil, bir string olarak ihtiyacım var.
PyErr_Fetch()
ile Özel durumun türünü ve değeri alabilirim. Ben Python yorumlayıcısı gösterileri dizeye PyErr_Fetch()
aldığım bilgilerden kolay bir yol
(2, 'No such file or directory', '/snafu/fnord')
var mı: Yukarıdaki Örneğin, değer bir başlık olur? (Her bir özel durum türü için bu tür dizeleri oluşturmayı gerektirmeyen bir tane.)
İkinci argüman bir dizi değil, bir tupledır. Ve ben zaten PyErr_NormalizeException() diyoruz. Ancak PyErr_Fetch() bir istisna nesnesi döndürmez, yalnızca istisna türü. Yani istisna nesnesini kendim yaratmalıyım, sanırım? Ve PyErr_Fetch() 'in ikinci argümanını kurucuya iletirim? – ashcatch
Oh, sadece kodumu kontrol ettim ve PyErr_NormalizeException() yöntemini her durumda aramadım. Bunu çağırmak, ikinci argümanı bir istisna nesnesine dönüştürür. Ve bunu PyObject_Str() ile bir dizgeye dönüştürmek istediğim sonucu alır. Çok teşekkürler. – ashcatch