Как я могу изменить файл .tdms с помощью Python?Python

Программы на Python
Ответить
Anonymous
 Как я могу изменить файл .tdms с помощью Python?

Сообщение Anonymous »

У меня есть файл измерения .tdms с некоторыми ошибочными данными.
В имя_группы = «Данные отслеживания» имя_канала = «Сдвиг (мм)» заполнено тарабарщиной.
Поэтому я хочу заменить данные в «Сдвиге (мм)», сохранив при этом остальную часть файла как есть. Поскольку я ничего не знаю о 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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»