我最近遇到了object 的readinto
方法file
(在 Python 2.7 中),它类似于fread
C 中的方法。在某些情况下它似乎很方便和强大。我打算用它来将多个文件读入一个预先分配的 numpy 数组,而无需复制数据。
例如
a = np.empty(N)
b = memoryview(a)
fp1.readinto(b[0:100])
fp2.readinto(b[100:200])
和
fp1.readinto(b[0:100])
fp1.seek(400, 1)
fp1.readinto(b[100:200])
在遇到. Cython
_ 所以我很高兴知道一个纯python的解决方案。fread
readinto
但是它的文档字符串说,
file.readinto?
Type: method_descriptor
String form: <method 'readinto' of 'file' objects>
Namespace: Python builtin
Docstring: readinto() -> Undocumented. Don't use this; it may go away.
不要用这个?发生了什么事?
所以我很困惑,我应该使用readinto
还是不使用?它可能会导致任何不必要的问题?
上面的代码是否有任何替代实现,readinto
但也避免数据复制?(避免复制意味着np.concatenate
或np.stack
不是一个好的选择。)
欢迎任何建议!谢谢你。
--------更新-----
看来我可以io.FileIO
在标准库中使用而不是内置函数open
。看起来不错,所以我将其发布为答案。
仍然欢迎任何评论或其他解决方案!
--------更新-----
如果您遇到同样的问题,您可能想看看下面
Andrea Corbellini 和 Padraic Cunningham 的评论。