我正在使用SWIG为GDCM生成的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文件中的相关片段(包含Print的功能)如下所示。
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不是实际的输出文件句柄,而是包装句柄。解决这个问题的最佳方法是什么?提前谢谢。