Python循环实现同一目录下所有TDMS文件数据批量读取展示
批量读取并可视化指定目录下的所有TDMS文件
我在名为abc的文件夹中存储了多个TDMS文件(如file1.tdms、file2.tdms等),目前用下面的Python loader类的load函数读取单个TDMS文件并可视化,但每次运行都得手动修改文件名序号才能切换文件。现在想修改load函数,实现自动遍历abc目录,批量读取并展示每个文件的数据。
原代码:
class loader(): def load(self, path): tdms_file = TdmsFile.read(path) df = tdms_file.as_dataframe() file_read = TdmsFile.read(path) data = file_read.groups()[0].channels()[0].data plt.suptitle('Timeseries data', fontsize='30') plt.xlabel('Timestamp', fontsize ='20') plt.ylabel('feature values', fontsize='20') plt.plot(df.iloc[:,0]) plt.show()
修改后的实现代码
import os import matplotlib.pyplot as plt from nptdms import TdmsFile # 假设使用nptdms库处理TDMS文件 class loader(): def load(self, dir_path): # 遍历目标目录下所有TDMS文件(兼容大小写后缀) for filename in os.listdir(dir_path): if filename.lower().endswith('.tdms'): file_full_path = os.path.join(dir_path, filename) print(f"处理文件:{filename}") # 读取TDMS文件(优化:避免重复读取同一文件) tdms_file = TdmsFile.read(file_full_path) df = tdms_file.as_dataframe() data = tdms_file.groups()[0].channels()[0].data # 生成带文件名的独立可视化图表 plt.figure(figsize=(10, 6)) plt.suptitle(f'Timeseries Data - {filename}', fontsize=20) plt.xlabel('Timestamp', fontsize=15) plt.ylabel('Feature Values', fontsize=15) plt.plot(df.iloc[:, 0]) plt.tight_layout() # 自动调整布局,防止标签截断 plt.show()
关键改动说明
- 目录遍历逻辑:用
os.listdir()遍历目标目录,通过后缀筛选仅处理TDMS文件,同时兼容.TDMS大写后缀的情况 - 读取效率优化:移除原代码中重复读取同一文件的冗余操作,仅读取一次即可获取所有需要的数据
- 可视化区分:将文件名添加到图表标题中,方便直观区分不同文件的可视化结果
- 图表布局优化:每个文件创建独立画布,避免图表重叠;用
plt.tight_layout()自动调整元素位置,防止标签被截断
使用示例
# 实例化loader类,传入abc文件夹的实际路径 data_loader = loader() data_loader.load("./abc") # 替换为你的abc文件夹绝对/相对路径
内容的提问来源于stack exchange,提问作者Aditya Bhandwalkar
相关产品推荐
相关产品推荐

