我猜这是一个python vs SWIG问题比什么都重要…
我正在使用带有SWIG Python绑定的C包.
我收到的一个对象是UTC时间戳,我正试图从中提取时间戳.
该对象具有以下特征:
>>> print type(obj)
<type 'SwigPyObject'>
>>> print dir(obj)
['__class__', '__cmp__', '__delattr__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__hex__', '__init__', '__int__', '__le__', '__long__', '__lt__', '__ne__', '__new__', '__oct__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'acquire', 'append', 'disown', 'next', 'own']
>>> print obj
<Swig Object of type 'UtcTimeStamp *' at 0x0379F320>
如何从中提取数据?
更新:
我发现UTCTimeStamp类是从DateTime结构派生的 – 它是开源QuickFix包的一部分.
但是我仍然不知道如何访问数据. DateTime具有简单的getter函数,例如getYear() – 但是,如何访问它们?
解决方法:
不要在时间字段上使用qfTimeField.getValue(),而是使用qfTimeField.getString(),然后只使用strptime()生成的字符串.例如:
qfSendingTime = fix.SendingTime()
message.getHeader().getField(qfSendingTime)
my_datetime = datetime.strptime(qfSendingTime.getString(), '%Y%m%d-%H:%M:%S.%f')