C++ 通过SWIG从Python访问UtcTimeStamp
我猜这是一个python vs SWIG的问题,比其他任何问题都重要C++ 通过SWIG从Python访问UtcTimeStamp,c++,python,timestamp,swig,quickfix,C++,Python,Timestamp,Swig,Quickfix,我猜这是一个python vs SWIG的问题,比其他任何问题都重要 我使用一个带有SWIG Python绑定的C++包。 我收到的其中一个对象是UTC时间戳,我正试图从中提取时间戳 该对象具有以下特征: >>> print type(obj) <type 'SwigPyObject'> >>> print dir(obj) ['__class__', '__cmp__', '__delattr__', '__doc__', '__eq__',
我使用一个带有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>
打印类型(obj)
>>>打印目录(obj)
“UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU新的,新的,新的,新的,新的,新的,新的,新的,新的,新的,新的,新的,新的,新的,新的,新的,新的,新的,新的,新的,新的,新的,新的,新的,新的,新的,新的,新的,新的,新的,新的,新的,新的,新的,“否认”、“下一个”、“拥有”]
>>>打印对象
如何从中提取数据
更新:
我发现这个类是从一个结构派生的,它是开源软件包的一部分
但是我仍然不知道如何访问数据。DateTime有一些简单的getter函数,比如getYear()-但是,如何访问它们呢?您是否尝试过
obj.getYear()
?从文档中可以看出,UTCTimeStamp
源自DateTime
,因此您应该能够访问父类的方法
如果这不起作用,如果执行newobj=obj.next()
,会得到什么类型的对象?您是否尝试过打印对象。\u\u文档?
编辑:来自:
这个指针值可以自由地传递给希望接收类型为。。。唯一不能做的就是从Python中取消对指针的引用
所以,您需要将其传递给C++函数的包装器,该函数可以使用<代码>日期时间< /代码>。我不知道具体是什么,因为我不知道你在包装什么
在这种情况下,也就是说。我相信,尽管我无法测试这一点,但你称之为:import quickfix
converter = quickfix.UtcTimeStampConverter()
string = converter.convert(obj)
不要在时间字段上使用
qfTimeField.getValue()
,而是使用qfTimeField.getString()
,然后只使用strtime()
生成的字符串。例如:
qfSendingTime = fix.SendingTime()
message.getHeader().getField(qfSendingTime)
my_datetime = datetime.strptime(qfSendingTime.getString(), '%Y%m%d-%H:%M:%S.%f')
是的,我试过obj.getYear()收到:
AttributeError:'SwigPyObject'对象没有属性“getYear”
print obj.\uuu doc\uuuu
返回Swig对象带有一个C/C++实例指针
你知道你库中的哪个C函数可以从你那里获取时间戳指针吗?不,我仍然不知道如何继续…一旦你import quickfix
您应该能够通过查看quickfix来找到正确的调用方法。然后是类的\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu
在我的编辑中(以防我的大小写错了什么)。这是一个非常好的答案,我自己也是这么做的。但是,您应该知道,在某些情况下,strtime
可能会失败。这是python中涉及多线程的一个已知错误,请参阅当发生这种情况时,您可以通过调用qfSendingTime.getString()
并忘记strptime
来解决。然后,当您需要将日期字符串用于其他用途时,将其转换为其他类型