В имя_группы = «Данные отслеживания» имя_канала = «Сдвиг (мм)» заполнено тарабарщиной.
Поэтому я хочу заменить данные в «Сдвиге (мм)», сохранив при этом остальную часть файла как есть. Поскольку я ничего не знаю о LabView, я хотел сделать это на Python с помощью модуля npTDMS.
Я попытался реализовать следующую функцию, которая правильно записывает «Сдвиг (мм)» в новый .tdms, перезаписывающий мой входной файл:
Код: Выделить всё
from nptdms import TdmsFile, TdmsWriter, RootObject, GroupObject, ChannelObject
import numpy as np
# File paths
tdms_file_path = r"P:\My Documents\Images tweezer\data_011.tdms"
replacement_file_path = r"Y:\Gert-Jan\Tweezer data\220407\shift.txt"
# Group and channel details
group_name = "Tracking data"
channel_name = "Shift (mm)"
# Load the replacement data
replacement_data = np.loadtxt(replacement_file_path)
# Write a new .tdms file containing the correct shift derived from replacement data
with TdmsWriter(tdms_file_path) as tdms_writer:
data_array = replacement_data
channel = ChannelObject(group_name, channel_name, data_array)
tdms_writer.write_segment([channel])
Код: Выделить всё
from nptdms import TdmsFile, TdmsWriter, RootObject, GroupObject, ChannelObject
import numpy as np
# File paths
tdms_file_path = r"P:\My Documents\Images tweezer\data_011.tdms"
replacement_file_path = r"Y:\Gert-Jan\Tweezer data\220407\shift.txt"
copy_tdms_file_path = r"P:\My Documents\Images tweezer\data_01_copy.tdms"
# Group and channel details
group_name = "Tracking data"
channel_name = "Shift (mm)"
# Load the replacement data
replacement_data = np.loadtxt(replacement_file_path)
# Original datafile properties
original_file = TdmsFile(tdms_file_path)
original_groups = original_file.groups()
original_channels = [chan for group in original_groups for chan in group.channels()]
# Write a new .tdms file containing the shift derived from replacement data
with TdmsWriter(copy_tdms_file_path) as copied_file:
root_object = RootObject(original_file.properties)
channels_to_copy = [chan for chan in original_channels if not chan("Shift (mm)")]
data_array = replacement_data
channel = ChannelObject(group_name, channel_name, data_array)
copied_file.write_segment([root_object] + original_groups + channels_to_copy + [channel])
Здесь задавался аналогичный вопрос: Добавить каналы в/редактировать существующие файлы tdms?, но ответа нет. для Python.
Подробнее здесь: https://stackoverflow.com/questions/792 ... ing-python
Мобильная версия