在python中从文件到数组



我正在阅读一本针对初学者的python教程,作者在某些地方定义了一些处理文件的方法。我的疑问与内存管理和文件数组有关。

#open a file for reading
file = open(filename, 'r')
#this turns the file into an array. 
lines = file.readlines() `

Python是否足够智能来检查文件大小?如果文件有大约1gb的数据,会发生什么?Python会把整个文件扔到内存(数组)?或者这是一个惰性操作,就像C/c++一样!

引用Python教程:

要读取文件的内容,调用f.read(size),它读取一定数量的数据并将其作为字符串返回。size是一个可选的数字参数。当size被省略或为负值时,将读取并返回文件的整个内容;如果文件是机器内存的两倍大,那就是你的问题了。否则,最多读取并返回size字节。如果到达文件末尾,f.read()将返回一个空字符串("")。

它也适用于readlines(),所以Python会将整个文件"抛出"到内存中。

同样,通过引用Python文档:

file.readlines([sizehint]): 使用readline()读取直到EOF,并返回包含由此读取的行列表. ...

Python is smart enough to check the file size?

是的。有一些操作系统相关的功能。您可以使用它们来获取文件大小。

What happens if the file has about 1 GB of data? Python will throw the entire file to the memory (array)? Or this is a lazy operation, just like C/C++ does!

如果您使用fp.readlines,是的,1GB的数据将存储在内存中。但不出所料,有一个这样的函数,增加文件指针像C/c++。所以你可以一块一块地读取数据,减少内存的使用。

fp.read(n)

我想你说的是C/c++类文件操作

相关内容

  • 没有找到相关文章

最新更新