我最近遇到了file
对象的readinto
方法(在Python 2.7中),它类似于C中的fread
。在某些情况下,它似乎是方便和强大的。我计划使用它将几个文件读取到一个预先分配的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
之前,我已经用fread
和readinto
来做了这个。所以我很高兴知道一个纯python的解决方案。
不管文档字符串怎么说
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
。看起来没问题,所以我已经把它作为答案贴出来了。
任何评论或其他解决方案仍然欢迎!
----更新-----
如果您遇到同样的问题,您可能需要通过
查看下面的评论
安德里亚·科贝利尼和帕德雷克·坎宁安。
目前没有回答
相关问题 更多 >
编程相关推荐