我知道可以使用 io.StringIO
或 io.BytesIO
返回一个可写入和读取的文件句柄。
但是,我正在寻找一种方法,使得内存区域看起来像一个尚未打开的命名磁盘文件。
之所以这样做是因为有些程序需要将磁盘文件的名称作为参数,并打开并操作该文件。在某些情况下,我希望这些程序的输入或输出为内存缓冲区,而不是磁盘文件,并且对于这些程序,我不能传递已经打开的文件句柄。
例如,PIL
的 Image.save()
就是这样一个例子,它期望其参数为路径名,而不是已打开的文件句柄。当使用该例程时,我希望图像数据直接保存到内存缓冲区,而不执行任何中间文件 I/O 操作。还有许多其他使用路径名作为参数的例程,我也希望具有相同的行为。
有没有办法在 Python 中实现这个目标?
Image.save()
可以接受文件指针作为文件名,因此您可以使用BytesIO
。 - kindallImage.save()
作为例子。 - HippoManImage.save()
,事实证明我必须先通过像byteiobuffer.name =“foo.jpg”
这样的方式设置BytesIO缓冲区的名称,因为Image.save()
查看该name
属性以获取图像类型。 - HippoMan