c smith wrote: > oh, and a question on 'pickle': > can pickle deserialize things that were not serialized by python? > can it convert data into a python data type regardless of it was > originally a 'c array' or something else that python doesn't support?
As long as the file written by C is a valid pickle file and all classes used are available to the Python interpreter you are fine: $ cat pickledemo_struct.c #include <stdio.h> typedef struct NAMEDPAIR { char name[10]; int x; int y; } namedpair; main() { FILE *f = fopen("tmp_struct.pickle", "wb"); int i; namedpair *p, data[] = {{"Cube", 10, 20}, {"Pyramid", 30, 40}}; fprintf(f, "(lp0\n"); for (i = 0, p = data; i != 2; i++, p++) { fprintf(f, "(S'%s'\nI%d\nI%d\ntp%d\na", p->name, p->x, p->y, i+1); } fprintf(f, "."); } $ gcc pickledemo_struct.c $ ./a.out $ python -c 'import pickle; print pickle.load(open("tmp_struct.pickle"))' [('Cube', 10, 20), ('Pyramid', 30, 40)] But remember that in C the information whether you have a 32 bit integer or four characters is in the code, not in the data; if you just dump that data to a file Python can still read it, but has no way of knowing what it's meant to be. _______________________________________________ Tutor maillist - Tutor@python.org To unsubscribe or change subscription options: http://mail.python.org/mailman/listinfo/tutor