RE: [ctypes-users] xml2struct?
Brought to you by:
theller
From: Hihn, J. <Jas...@ve...> - 2005-06-21 17:22:30
|
Well I figured it out - some weird NFS caching issue on the data file. I had an unpopulated but correct length datafile, then copied a populated one, then ran it too soon. I've since turned off caching on the export. This works *perfectly*. Really, I cannot be more pleased or enthused. I have many, many times wanted to extract stuff out of packed files whose format is governed by a .h, but never wanted to take the time to code it in C/C++. To have something xplatform and so easy to write - I am sure I'll use this from now on! Does anyone know how this compares to SIP? (For/From the PyQt people (Riverbank Computing?)( http://www.riverbankcomputing.co.uk/sip/index.php ) In response to Dave writing: ''' Hihn, Jason wrote: > Dave Wrote: > ''' > Then you could read a file of these structures like this: [snip] > Well, it doesn't seem to work, but it fails beautifully! It doesn't > error, but I am thinking it needs to call itself recursively to populate > each individual item. My data keeps coming up as 0s or nulls depending > on the type. The problem I am faced with is the order of fields. I can't > just do a dir(struct) and not process _* params. ?? I'm not sure I understand this part - perhaps I completely misunderstood your=0D problem. I'm assuming you have a data file (a "binary" file) of fixed size=0D records that you want to read in, hence your original use of the struct module.=0D This file could have been generated in C with code along the lines of: FILE *f =3D fopen("somefile.dat", "wb"); fwrite(&theStruct, sizeof(theStruct), 1, f); ... (i.e. the structures have been written directly to the file without any sort of=0D additional processing or marshalling) If the above is true, then in Python the structures themselves get populated as=0D they get created in the StringToObject function - you don't have to do anything=0D else to populate them. For reading their values, you can do so by name. But if you need to get their=0D values programmatically (the structures themselves are dynamic and you don't=0D know their names ahead of time), you can get the field names in order like this: [x for x,y in MyStruct._fields_] For example, if 'obj' is an instance of some ctypes Structure you could print=0D out field names and values with (untested): for name, dataType in obj._fields_: print name, getattr(obj, name) > What is the best way for me to proceed? Do you have an example of the ctypes Structure that the code generator produced?=0D If you could supply that plus a little bit of the data, I'd be happy to have a look. ''' ___________________________________________________________________________= _______________ This electronic message may contain proprietary and confidential= information of Verint Systems Inc., its affiliates and/or subsidiaries. The information is intended to be for the use of the individual(s) or entity(ies) named above. If you are not the intended recipient (or= authorized to receive this e-mail for the intended recipient), you may not= use, copy, disclose or distribute to anyone this message or any= information contained in this message. If you have received this= electronic message in error, please notify us by replying to this e-mail.= (1) |