我正在使用Python2.7编写单元测试代码,通过ndarray.tofile(fileHandle,..)
将numpy数组写入文件。由于在单元测试中进行文件IO有很多不好的原因,所以我该如何替换文件句柄为字节内存流呢?(io.BytesIO
无法工作,因为ndarray.toFile()
要求一个文件名。)
我正在使用Python2.7编写单元测试代码,通过ndarray.tofile(fileHandle,..)
将numpy数组写入文件。由于在单元测试中进行文件IO有很多不好的原因,所以我该如何替换文件句柄为字节内存流呢?(io.BytesIO
无法工作,因为ndarray.toFile()
要求一个文件名。)
一个 tempfile.TemporaryFile
对你有用吗?
它暴露了与普通文件对象相同的接口,所以你可以直接将其传递给 np.ndarray.tofile()
,当它被明确关闭或垃圾回收时,它会立即被删除:
import numpy as np
from tempfile import TemporaryFile
x = np.random.randn(1000)
with TemporaryFile() as t:
x.tofile(t)
# do your testing...
# t is closed and deleted
然而,它将暂时驻留在磁盘上(通常在Linux机器上的/tmp/
),但我没有看到完全避免I/O的简单方法,因为.tofile()
最终需要一个有效的操作系统级文件描述符。
tmpfs
里。 - ali_m