我正在为 GDCM 使用 SWIG 生成的 Python 包装器(与 gdcm.py 一起提供)。
我正在运行以下 Python3 脚本。
import gdcm
import sys
filename="path_to_data/gdcm_test.dcm"
r = gdcm.Reader()
r.SetFileName(filename)
r.Read()
f=r.GetFile()
ds = f.GetDataSet()
csa_t1 = gdcm.CSAHeader()
t1 = csa_t1.GetCSAImageHeaderInfoTag()
csa_t1.LoadFromDataElement(ds.GetDataElement( t1))
csa_t1.Print(sys.stdout)
gdcmswig.py 文件中的相关片段(带有包装打印的函数)如下。
def Print(self, os: 'std::ostream &') -> "void":
"""
void
gdcm::CSAHeader::Print(std::ostream &os) const
Print the CSAHeader (use only if Format == SV10 or NOMAGIC)
"""
return _gdcmswig.CSAHeader_Print(self, os)
问题出现在我脚本的最后一行。调用 Print(sys.stdout)。
TypeError: in method 'CSAHeader_Print', argument 2 of type 'std::ostream &'
我认为,问题在于 Python 的 sys.stdout 不是实际的输出文件句柄,而是包装了句柄。解决这个问题的最佳方法是什么?提前致谢。