Tôi sử dụng ctypes để truy cập tệp đọc hàm C trong python. Vì dữ liệu đọc lớn và không xác định kích thước, tôi sử dụng **float
trong C.Truy cập nội dung của một mảng biến với ctypes
int read_file(const char *file,int *n_,int *m_,float **data_) {...}
Các chức năng mallocs
một mảng 2d, gọi data
, kích thước phù hợp, đây n
và m
, và bản sao các giá trị để những người được tham chiếu. Xem sau đoạn:
*data_ = data;
*n_ = n;
*m_ = m;
tôi truy cập vào chức năng này với mã python sau:
p_data=POINTER(c_float)
n=c_int(0)
m=c_int(0)
filename='datasets/usps'
read_file(filename,byref(n),byref(m),byref(p_data))
Sau đó tôi cố gắng acces p_data
sử dụng contents
, nhưng tôi chỉ nhận được một giá trị float duy nhất.
p_data.contents
c_float(-1.0)
Câu hỏi của tôi là: Làm cách nào để truy cập data
bằng python?
Bạn đề xuất điều gì? Xin đừng ngần ngại chỉ ra nếu tôi để lại một cái gì đó không rõ ràng!
+1 cho ctypes, thư viện trăn tốt nhất – amwinter