在python_中读取TDMS文件如何使用tdmsinfo命令?

时间:2017-06-28 08:09:55

标签: python labview

我想知道由Labview制作的tdms文件的内容。

site之后,我用Python编写:

import numpy as np
from nptdms import TdmsFile
from nptdms import tdms

#read a tdms file
filenameS = "RESULTS.tdms"
tdms_file = TdmsFile(filenameS)

tdmsinfo [--properties] tdms_file

我收到以下错误:

tdmsinfo [--properties] tdms_file
                                    ^
SyntaxError: invalid syntax

我不知道如何解决它。

感谢您的帮助:)

3 个答案:

答案 0 :(得分:4)

您正在寻找的是:

首先从文件中创建TMDS对象:

tdms_file = TdmsFile("C:\\Users\\XXXX\\Desktop\\xx Python\\XXXX.tdms")

然后获取组名:

tdms_groups = tdms_file.groups()

在找出文件中的组名后,只需写下

即可
tdms_groups

它将打印以下内容:

['Variables_1','Variables_2','Variables_3','Variables_4'等等。]

现在使用群组名称,您将能够获得具有以下内容的频道:

tdms_Variables_1 = tdms_file.group_channels("Variables_1")

接下来打印您的频道包含在该组中:

tdms_Variables_1

它会显示:

[带路径的TdmsObject /'Variables_1'/'Channel_1',带路径的TdmsObject /'Variables_1'/'Channel_2'等等。]

最后获取向量及其数据:

MessageData_channel_1 = tdms_file.object('Variables_1', 'Channel_1')
MessageData_data_1 = MessageData_channel_1.data

检查您的数据

MessageData_data_1

对您的数据做些什么! 干杯!

答案 1 :(得分:1)

要遍历根对象的所有属性,请尝试:

 #read a tdms file
 filenameS = "RESULTS.tdms"
 tdms_file = TdmsFile(filenameS)
 root_object = tdms_file.object()

 # Iterate over all items in the properties dictionary and print them
 for name, value in root_object.properties.items():
      print("{0}: {1}".format(name, value))

那应该给你所有的属性名称。

答案 2 :(得分:1)

您的问题似乎是tdmsinfo无法在Python脚本中运行,因为它不是python命令:它是"a command line program"

解决方案是使用&#tdmsinfo'从一个Windows shell,或在python中创建一个包装器,以便它在子进程中为您运行命令。例如在Python3中使用子进程包

import subprocess
tdmsfile='my_file.tdms'
# startup info to hide the windows shell
si = subprocess.STARTUPINFO()
si.dwFlags |= subprocess.STARTF_USESHOWWINDOW
#si.wShowWindow = subprocess.SW_HIDE # default
# run tdmsinfo in a subprocess and capture the output in a
a = subprocess.run(['tdmsinfo',tdmsfile],
                   stdout=subprocess.PIPE,
                   startupinfo=si).stdout
a = a.decode('utf-8')
print(a)

上面的代码应该只为您提供通道和组,但您也可以使用-p标志运行以包含所有TDMS对象属性

a = subprocess.run(['tdmsinfo','-p',tdmsfile],
                   stdout=subprocess.PIPE,
                   startupinfo=si).stdout