FILE object in Python3.0 extension modules

"Martin v. Löwis" martin at
Wed Jun 3 08:55:42 CEST 2009

> The purpose is to dump the contents of a Python extension type to disk
> as binary data using C's fwrite() function.

This isn't really possible anymore - the Python IO library has stopped
using stdio. There are a couple of alternatives:

1. don't use fwrite(3) to write the binary data, but instead use
   PyObject_CallMethod to call .write on the file object.
2. don't use fwrite(3), but write(2). To do so, fetch the file
   descriptor from the Python file object, and use that. Make sure
   you flush the stream before writing to it, or else you may get
   the data in the wrong order.
3. use fdopen to obtain a FILE*; the comments for 2) apply.
   In addition, make sure to flush and discard the FILE* before
   letting Python continue to write to the file.


More information about the Python-list mailing list