From 0c1a560b911f448def0d82a04a75155e5e88b470 Mon Sep 17 00:00:00 2001 From: phansel Date: Tue, 11 Nov 2025 01:31:39 -0800 Subject: [PATCH] fix for bin files with empty/nonexistent date/time strings --- read_bin.py | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/read_bin.py b/read_bin.py index ee0221d..98999c3 100644 --- a/read_bin.py +++ b/read_bin.py @@ -45,9 +45,10 @@ def read_agilent_binary(fname, use_segments=False, include_time_vector=False, in wf_header = np.fromfile(f, dtype=waveform_header_dtype, count=1) #Grab important strings in a python 2/3 compatible way - channel_string = bytes(wf_header['waveform_string'][0]).decode('utf-8').replace(' ', '_') - date_string = bytes(wf_header['date_string'][0]).decode('utf-8') - time_string = bytes(wf_header['time_string'][0]).decode('utf-8') + # but strip any null characters. + channel_string = bytes(wf_header['waveform_string'][0]).decode('utf-8', errors='ignore').rstrip('\x00 ').lstrip('\x00 ').replace(' ', '_') + date_string = bytes(wf_header['date_string'][0]).decode('utf-8', errors='ignore').rstrip('\x00 ').lstrip('\x00 ') + time_string = bytes(wf_header['time_string'][0]).decode('utf-8', errors='ignore').rstrip('\x00 ').lstrip('\x00 ') #Start a new dictionary @@ -64,7 +65,7 @@ def read_agilent_binary(fname, use_segments=False, include_time_vector=False, in if key not in ['header_size', 'waveform_type', 'num_waveform_buffers', 'segment_index', 'time_tag']: wf_dict[channel_string][key] = wf_header[key][0] - if include_datetime: + if include_datetime and date_string and time_string: datetime = dp.parse(date_string + ' ' + time_string) wf_dict[channel_string]['datetime'] = datetime