首页 > 解决方案 > 像 Labview 一样,在 python 中只打开部分大型 TDMS 文件

问题描述

我在 Labview 中创建了大(> 20GB,大于 RAM).tdms 文件以在 python3 中打开。我可以使用保留 RAM 不变nptdms的选项。memamp_dir但这会在磁盘上写入另一个大文件,这有时会出现问题并且速度很慢。

Labview 可以非常快速地读取文件的一部分。nptdms在 python with或其他中这可能吗?

(似乎在这里讨论过,但我找不到简单的解决方案。另外,nptdms.tdms_segment.py可能是解决方案的一部分,但很难理解它对我的工作原理)

标签: pythonlabview

解决方案


应该可以使用iqtools库。我经常使用它来跳转到非常大的文件(测试大约 5GB)的某个位置,seek只使用并读取一部分,而不是整个文件。通常你应该考虑包含大量数据点的TDMS文件,其中包含一些复杂的数据格式,帧的长度,帧数量基本上都是数字,方便你分析。“跳跃”是使用起始帧参数完成的。

from iqtools import *
filename ='blah.tdms'
myiq=TDMSData(filename)
myiq.read(nframes=100, lframes=1024, sframes=400)

这意味着从样本 400 开始,每 1024 个样本读取 100 帧。

对于非常小的文件,还有另一个read_complete_file功能。在库中还有许多其他用于光谱分析的工具,例如 1D 和 2D 光谱图、多锥度等。存储库中有一些示例。

顺便提一句。iqtools库还有一个名为IQGUI的 GUI 前端,虽然不如库界面通用,但可以使用可视滑块“遍历”时间文件。

也许这会有所帮助。


推荐阅读