我正在使用ctypes用Python包装一个C库(我已经控制过).我想用声明包装一个C函数:
int fread_int( FILE * stream );
Run Code Online (Sandbox Code Playgroud)
现在; 我想在python中打开文件,然后使用Python文件对象(以某种方式??)来访问底层的FILE*对象并将其传递给C函数:
# Python
fileH = open( file , "r")
value = ctypes_function_fread_int( ????? )
fileH.close()
Run Code Online (Sandbox Code Playgroud)
Python文件< - > FILE*映射是否可能?
乔金 -
Ale*_*lli 27
Python文件对象不一定具有底层C级FILE *
- 至少,除非您愿意将代码绑定到极其特定的Python版本和平台.
我会建议,而不是使用是Python文件对象的fileno
得到一个文件描述符,然后用ctypes
调用C运行时库的fdopen
制作FILE *
出来的那个.这是一种非常便携的方法(你也可以采用其他方式).最大的问题是,对于在同一文件描述符(Python文件对象和C FILE *
)上打开的两个对象,缓冲将是分开的,因此请务必根据需要经常刷新所述对象(或者,如果没有缓冲,则打开这两个对象,如果这更方便,与您的预期用途兼容).
yk4*_*ver -1
我遇到了同样的问题。
看看这个文件:
http://svn.python.org/projects/ctypes/trunk/ctypeslib/ctypeslib/contrib/pythonhdr.py
您可以从中使用 PyFile_AsFile 。
归档时间: |
|
查看次数: |
6229 次 |
最近记录: |