python - 像 Labview 一样,在 python 中只打开部分大型 TDMS 文件
问题描述
我在 Labview 中创建了大(> 20GB,大于 RAM).tdms 文件以在 python3 中打开。我可以使用保留 RAM 不变nptdms
的选项。memamp_dir
但这会在磁盘上写入另一个大文件,这有时会出现问题并且速度很慢。
Labview 可以非常快速地读取文件的一部分。nptdms
在 python with或其他中这可能吗?
(似乎在这里讨论过,但我找不到简单的解决方案。另外,nptdms.tdms_segment.py
可能是解决方案的一部分,但很难理解它对我的工作原理)
解决方案
应该可以使用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 前端,虽然不如库界面通用,但可以使用可视滑块“遍历”时间文件。
也许这会有所帮助。
推荐阅读
- angular - 连接被拒绝:localhost:4200 favicon.ico 502 in angular 7
- java - 可执行的 .jar 文件不运行
- scala - 如何在 Scala 中建模布隆过滤器
- linux - 从 go lang 程序启动终端窗口?
- java - 如何为 SpringBoot 配置多个 SQS JMS 侦听器。?
- r - 在 R 上添加设置列值作为最小/最大误差线
- python - Python无法使用硒识别表格单元格中的文本
- android - 片段相互重叠......并且前一个片段正在单击
- regex - 如何使用正则表达式检查单词边界是否全为零
- arrays - 我似乎无法从 Perl 中的引用拼接数组