对于几百兆及以上大小的csv数据或日志文件等文件数据,不建议使用Import直接导入(上限貌似是512M,但即使是二三百兆也不建议使用Import)。
对于大文件数据,可以先通过底层文件操作方式打开文件,以流的方式处理,对原始数据进行整理汇总。
然后,对整理汇总之后的数据就可以使用Mma的各种强大函数了。
常用的底层文件操作函数:在帮助中搜索“guide/LowLevelFileOperations”
贴个例子:
path = SystemDialogInput["FileOpen", "此处可设置默认路径"];
sr = OpenRead[path];
rs = ReadLine[sr];
(*先读入一行。如果有非ASCII字符,参考FromCharacterCode和ToCharacterCode*)
While[rs =!= EndOfFile,
rs = StringSplit[rs, ","];
(*处理语句块*)
(*..........*)
(*处理语句块*)
rs = ReadLine[sr];
]
下面这个包含处理进度:
path = SystemDialogInput["FileOpen", "此处可设置默认路径"];
sr = OpenRead[path];
fileLength = FileByteCount[path];
Dynamic[Column[{Row[{Floor[100 StreamPosition[sr]/fileLength], "%"}],
ProgressIndicator[StreamPosition[sr]/fileLength]}]]
rs = ReadLine[sr];
(*先读入一行。如果有非ASCII字符,参考FromCharacterCode和ToCharacterCode*)
While[rs =!= EndOfFile,
rs = StringSplit[rs, ","];
(*处理语句块*)
(*..........*)
(*处理语句块*)
rs = ReadLine[sr];
]