当前位置: 首页 > 面试题库 >

Python 3替代PyFile_AsFile

云和硕
2023-03-14
问题内容

以下代码可在Python 2中使用:

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))

但是在Python 3中,pythonapi中没有PyFile_AsFile。

该代码是testPixelOps.py的例外。


问题答案:

我只需要一种将文件对象转换为ctypes FILE *的方法,以便可以将其传递给GD。

你真倒霉 这在Python 2.x中是可能的,但在Python
3.x中是不可能的。该文档解释了为什么不这样做:

这些API是用于内置文件对象的Python 2 C API的最小仿真,该文件过去依赖于C标准库中的缓冲I / O(FILE *)支持。在Python
3中,html" target="_blank">文件和流使用新的io模块,该模块在操作系统的低级无缓冲I / O上定义了几层。

如果您想要一个FILE*,则必须直接使用C标准库来自己制作。



 类似资料:
  • 问题内容: 这是一个从来没有一个正确答案的问题,我已经在网上搜索了很多次,却找不到解决方案。 它适用于Firefox,Chrome。我的responseText将像Réunion这样返回char,它将显示为奇怪的符号。 我尝试了许多方法,例如编码和解码,在响应文件中设置标头都无效。我没主意了。请帮助某人。 在主文件中,确保设置了内容类型和字符集。 在您的AJAX加载页面中,确保您位于顶部。 问题解

  • 问题内容: 问题 在解决这个问题之后,似乎基于文件或磁盘的实现可能是解决我在此处提到的问题的正确解决方案。精简版: 目前,我已将实施为。 条目以相当固定的速率连续添加到其中。稍后对此进行详细说明。 最终,无论如何,这意味着JVM耗尽了堆空间。 在工作中,(强烈)建议我使用SQLite解决此问题,但是在问了上一个问题之后,我认为数据库不是适合此工作的合适工具。所以- 让我知道这听起来是否疯狂 -我认

  • 问题内容: 首先-我的描述;) 我从服务器收到XmlHttpRequests JSON响应。MySQL驱动程序将所有数据输出为字符串,PHP将其按原样返回,因此任何整数都将作为字符串返回,因此: JS中的parseInt()函数是否有任何快速替代方法(hack),可以解析纯数字字符串,例如 问题答案: 要转换为整数,只需使用一元+运算符,它应该是最快的方法: 可以通过类似的方式转换为其他类型: 更

  • 问题内容: 我有以下内容: 和 终于我有了 如果我做 和P元帅,我只是把田野当作事物的一部分,而不是高度。 我知道我可以在A中添加@XmlSeeAlso(B.class),这一切都可以。 但是问题是我不知道B以外的所有扩展类,因为A可能在运行时扩展。 如何在运行时动态定义@XmlSeeAlso? 问题答案: 这取决于您如何创建JAXBContext。该newInstance方法可以与所有的类的显式

  • 问题内容: 在一个Web项目中,用户上传了他们的文件,但是当我在服务器上收到它们时,它们将被存储为.tmp文件而不是原始文件扩展名(这也是我的首选行为)。 但是,这引起了问题。虽然对我来说本地的,但是在我的Linux开发机器上,它可以正常工作并且可以确定正确的mime类型,但是当我将项目上传到生产服务器(amazon beantalk)时,似乎无法正确确定mime类型。 从阅读javadocs来看

  • 问题内容: 我正在尝试使用CSS和没有jquery动态地更改div的宽度。 以下代码将 我还希望支持IE 5.5及更高版本 ,我发现了以下内容:表达式。这是正确的用法吗? 我还可以支持Opera和Android浏览器吗? 问题答案: 几乎总是可以替换计算规则,例如用于布局。 例如: 如果我有以下标记: 而不是这样做:(假设边栏为300px宽) 做这个: PS: 我不会在IE 5.5(hahahah