Я пытаюсь прочитать только метаданные моих файлов TDMS, но мой код читает весь файл. У кого-нибудь есть опыт в этом? Спасибо.

Это мой текущий код:

import numpy as np
from nptdms import TdmsFile as td

with td.open('c:\data\AM\Desktop\X\file1.tdms') as tdms_file:
    print(tdms_file)
    td('c:\data\AM\Desktop\X\file1.tdms').as_dataframe().to_excel('c:\data\AM\Desktop\X\file1.xlsx')
0
ManCity10 23 Июн 2020 в 11:47

1 ответ

Лучший ответ

Как объясняется в документации, вы можете читать метаданные напрямую, используя nptdms .TdmsFile.read_metadata

import numpy as np
from nptdms import TdmsFile as td

metadata = td.read_metadata(tdms_file_path)
print(metadata.properties)

Пример использования файла tdms из unittests библиотеки nptdms:

https://github.com/adamreeve/npTDMS/blob/master/nptdms/test/data/Digital_Input.tdms

In [2]: from nptdms import TdmsFile as td                                                                                                                                           

In [3]: tdms_file_path = "../../Digital_Input.tdms"                                                                                                                                 

In [4]: metadata = td.read_metadata(tdms_file_path)                                                                                                                                 

In [5]: metadata.properties                                                                                                                                                         
Out[5]: 
OrderedDict([('name', 'Digital_Input'),
             ('format-string', ''),
             ('iteration-based-timing', False),
             ('unit_string', ''),
             ('unit-GUID', '{9F75F685-3F5A-4657-8B49-BA907C49DA69}'),
             ('X-unit-string', 's'),
             ('X-unit-GUID', '{0748B676-82D4-4318-A843-708972E53760}'),
             ('unit-version', 0),
             ('Title', '07/09/2012 06:58:23 PM'),
             ('Prefix', '07/09/2012 06:58:23 PM'),
             ('Author', 'SV-LAB-DESKTOP#1'),
             ('Description', ''),
             ('log-datatype', 'Time-DWDT'),
             ('FileFormatVersion', '2.1'),
             ('WriterVersion', '5.0'),
             ('WriterName', 'LabVIEW SignalExpress 2011'),
             ('DateTime', numpy.datetime64('2012-07-09T23:58:24.000000')),
             ('TimeZone', 'Central Daylight Time'),
             ('timing-mode', 'HWTimed_Continuous'),
             ('DataFormat', 'SingleWaveform'),
             ('IntervalCount', 1),
             ('data-ready-for-viewing', True),
             ('log-duration', 10.0),
             ('log-dt', 0.0005),
             ('log-iteration-length', 1.0),
             ('recording-complete', True),
             ('samples prepared for viewing', 20000)])

Дополнительный вопрос : как сохранить метаданные в Excel?

import pandas as pd
df = pd.DataFrame(metadata.properties.items(), columns=["property", "value"])
df.to_excel(output_excel_file_path)

Если вы хотите, чтобы имена свойств были столбцами в Excel, вы можете сохранить результаты следующим образом:

import pandas as pd
df = pd.DataFrame([metadata.properties.values()], columns=metadata.properties.keys())
df.to_excel(output_excel_file_path)
1
Mohamed Ali JAMAOUI 23 Июн 2020 в 09:56