Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

ctypes initializing c_int array by reading file

Using a Python array, I can initialize a 32,487,834 integer array (found in a file HR.DAT) using the following (not perfectly Pythonic, of course) commands:

F = open('HR.DAT','rb')
HR = array('I',F.read())
F.close()

I need to do the same in ctypes. So far the best I have is:

HR = c_int * 32487834

I'm not sure how to initilize each element of the array using HR.DAT. Any thoughts?

Thanks,

Mike

like image 790
MikeRand Avatar asked Dec 16 '22 23:12

MikeRand


1 Answers

File objects have a 'readinto(..)' method that can be used to fill objects that support the buffer interface.

So, something like this should work:

f = open('hr.dat', 'rb')
array = (c_int * 32487834)()
f.readinto(array)
like image 82
Thomas Heller Avatar answered Jan 07 '23 18:01

Thomas Heller