En Fri, 29 May 2009 06:52:15 -0300, Joachim Dahl <dahl.joac...@gmail.com>
escribió:
In Python2.x, I used PyFile_Check(obj) to check if a parameter was a
file object.
Now, in Python3.0 the same object (obtained as open('file.bin','wb'))
is an
io.BufferedWriter object.
How do I perform type checking for such an object in the extension
module,
I don't know which is the preferred way to check for a file object in 3.x
- I hope someone can answer this more precisely. In principle, a file
inherits from io.IOBase, but this class is defined in io.py and probably
isn't intended to be used in C code. Other alternatives are _io._IOBase,
PyIOBase_Type, and io.FileIO/_io.FileIO
and how do I extract a FILE * object from it? I browsed the C API
documentation, but
couldn't find an answer.
I'd use PyObject_AsFileDescriptor
http://docs.python.org/dev/py3k/c-api/file.html
(Notice that the documentation is outdated; the PyFileObject type does not
exist anymore, and a file isn't a wrapper around a FILE struct either)
The purpose is to dump the contents of a Python extension type to disk
as
binary data using C's fwrite() function.
From the above, I'd use write() with the file descriptor obtained from
PyObject_AsFileDescriptor.
--
Gabriel Genellina
--
http://mail.python.org/mailman/listinfo/python-list