-
Notifications
You must be signed in to change notification settings - Fork 91
/
Copy pathtdmsinfo.py
61 lines (48 loc) · 1.77 KB
/
tdmsinfo.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
from __future__ import print_function
from argparse import ArgumentParser
import logging
from nptdms import TdmsFile
from nptdms.log import log_manager
def main():
parser = ArgumentParser(
description="List the contents of a LabView TDMS file.")
parser.add_argument(
'-p', '--properties', action="store_true",
help="Include channel properties.")
parser.add_argument(
'-d', '--debug', action="store_true",
help="Print debugging information to stderr.")
parser.add_argument(
'tdms_file',
help="TDMS file to read.")
args = parser.parse_args()
if args.debug:
log_manager.set_level(logging.DEBUG)
tdmsinfo(args.tdms_file, args.properties)
def tdmsinfo(file, show_properties=False):
tdms_file = TdmsFile.read_metadata(file)
level = 0
display('/', level)
if show_properties:
display_properties(tdms_file, level + 1)
for group in tdms_file.groups():
level = 1
display("%s" % group.path, level)
if show_properties:
display_properties(group, level + 1)
for channel in group.channels():
level = 2
display("%s" % channel.path, level)
if show_properties:
level = 3
if channel.data_type is not None:
display("data type: %s" % channel.data_type.__name__, level)
display("length: %d" % len(channel), level)
display_properties(channel, level)
def display_properties(tdms_object, level):
if tdms_object.properties:
display("properties:", level)
for prop, val in tdms_object.properties.items():
display("%s: %s" % (prop, val), level + 1)
def display(s, level):
print("%s%s" % (" " * 2 * level, s))