Python sas7bdat模块-迭代器还是内存密集型?

Python sas7bdat模块-迭代器还是内存密集型?,python,sas,Python,Sas,我想知道Python中的sas7bdat模块是创建迭代器类型的对象还是将整个文件作为列表加载到内存中?我感兴趣的是对一个大约750GB的.sas7bdat文件逐行执行一些操作,我真的不希望Python尝试将整个过程加载到RAM中 示例脚本: from sas7bdat import SAS7BDAT count = 0 with SAS7BDAT('big_sas_file.sas7bdat') as f: for row in f: count+=1 我也可以用 it = f.__it

我想知道Python中的sas7bdat模块是创建迭代器类型的对象还是将整个文件作为列表加载到内存中?我感兴趣的是对一个大约750GB的.sas7bdat文件逐行执行一些操作,我真的不希望Python尝试将整个过程加载到RAM中

示例脚本:

from sas7bdat import SAS7BDAT
count = 0
with SAS7BDAT('big_sas_file.sas7bdat') as f:
 for row in f:
  count+=1
我也可以用

it = f.__iter__()

但我不确定这是否仍然会经历内存密集型数据加载。如果您了解sas7bdat的工作原理或其他处理此问题的方法,我们将不胜感激

您可以在上看到相关代码。docstring将迭代描述为一个“生成器”,查看代码,它似乎是在读取文件的一小部分,而不是一次读取整个内容。但是,我对文件格式了解不够,无法知道是否存在可能导致它一次读取大量数据的情况


如果您真的想在一个巨大的750G文件上试用它之前了解它的性能,那么您应该通过创建几个大小不断增加的示例文件来测试它,看看它的性能如何随文件大小而变化。

是的,使用sys.getsizeof()的一些组合,计时和顶部我能够确定SAS7BDAT对象实际上是一个生成器,所以它不会占用太多内存。谢谢sas7bdat表是固定长度的文件。根据我的推理,即使使用内置的SAS压缩方法(只需删除空白填充),也不会出现需要大量文件的情况。