首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Python3替代PyFile_AsFile

Python3替代PyFile_AsFile
EN

Stack Overflow用户
提问于 2013-04-21 18:37:02
回答 2查看 2.6K关注 0票数 9

以下代码可以在Python 2中运行:

代码语言:javascript
运行
复制
from ctypes import *

## Setup python file -> c 'FILE *' conversion :
class FILE(Structure):
    pass
FILE_P = POINTER(FILE)
PyFile_AsFile = pythonapi.PyFile_AsFile # problem here
PyFile_AsFile.argtypes = [py_object]
PyFile_AsFile.restype = FILE_P
fp = open(filename,'wb')
gd.gdImagePng(img, PyFile_AsFile(fp))

但是在Python3中,pythonapi中没有PyFile_AsFile。

代码是来自testPixelOps.py的except。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-04-21 22:39:08

我只需要一种将文件对象转换成ctype文件的方法,这样我就可以把它传递给GD。

你真不走运。这在Python2.x中是可能的,但在Python3.x中是不可能的。documentation解释了为什么不:

这些API是针对内置文件对象的Python2CAPI的最小模拟,后者过去依赖于C标准库的缓冲I/O ( file *)支持。在Python3中,文件和流使用新的io模块,该模块在操作系统的低级无缓冲I/O上定义了多个层。

如果你想要一个FILE*,你必须自己做一个,直接使用C标准库。

票数 13
EN

Stack Overflow用户

发布于 2013-04-21 20:51:12

我没有找到这个问题的真正答案,但我发现如果不需要将Python file对象转换为FILE* (即,您不需要“共享”打开的文件),则只需使用ctypeslibc调用fopen并获得类似的FILE*即可。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16130268

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档