我是否应该使用python文件的readinto方法?

2024-05-12 14:32:24 发布

您现在位置:Python中文网/ 问答频道 /正文

我最近遇到了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之前,我已经用freadreadinto来做了这个。所以我很高兴知道一个纯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.concatenatenp.stack不是一个好的选择。)

欢迎任何建议!谢谢您。

----更新-----

似乎我可以在标准库中使用io.FileIO,而不是内置函数open。看起来没问题,所以我已经把它作为答案贴出来了。

任何评论或其他解决方案仍然欢迎!

----更新-----

如果您遇到同样的问题,您可能需要通过
查看下面的评论 安德里亚·科贝利尼和帕德雷克·坎宁安。


Tags: 文件数据对象方法numpynp评论情况