@@ -55,8 +55,8 @@ def _parse_header(self):
5555 marker_filename = self .filename .replace (bname , vhdr_header ["Common Infos" ]["MarkerFile" ])
5656 binary_filename = self .filename .replace (bname , vhdr_header ["Common Infos" ]["DataFile" ])
5757
58- binary_filename = self ._ensure_filename (binary_filename , "data " )
59- marker_filename = self ._ensure_filename (marker_filename , "marker " )
58+ marker_filename = self ._ensure_filename (marker_filename , "marker" , "MarkerFile " )
59+ binary_filename = self ._ensure_filename (binary_filename , "data" , "DataFile " )
6060
6161 if vhdr_header ["Common Infos" ]["DataFormat" ] != "BINARY" :
6262 raise NeoReadWriteError (
@@ -239,7 +239,7 @@ def _rescale_event_timestamp(self, event_timestamps, dtype, event_channel_index)
239239 def _get_analogsignal_buffer_description (self , block_index , seg_index , buffer_id ):
240240 return self ._buffer_descriptions [block_index ][seg_index ][buffer_id ]
241241
242- def _ensure_filename (self , filename , kind ):
242+ def _ensure_filename (self , filename , kind , entry_name ):
243243 if not os .path .exists (filename ):
244244 # file not found, subsequent import stage would fail
245245 ext = os .path .splitext (filename )[1 ]
@@ -256,6 +256,29 @@ def _ensure_filename(self, filename, kind):
256256 f"prefix matched the .vhdr ({ os .path .basename (alt_name )} ). Using "
257257 f"this file instead." )
258258 filename = alt_name
259+ else :
260+ # we neither found the file referenced in the .vhdr file nor a file of
261+ # same name as header with the desired extension; most likely a file went
262+ # missing or was renamed in an inconsistent fashion; generate a useful
263+ # error message
264+ header_dname = os .path .dirname (self .filename )
265+ header_bname = os .path .basename (self .filename )
266+ referenced_bname = os .path .basename (filename )
267+ alt_bname = os .path .basename (alt_name )
268+ if alt_bname != referenced_bname :
269+ # this is only needed when the two candidate file names differ
270+ detail = (f" is named either as per the { entry_name } ={ referenced_bname } "
271+ f"line in the .vhdr file, or" )
272+ else :
273+ # we omit it if we can to make it less confusing
274+ detail = ""
275+ self .logger .error (
276+ f"Did not find the { kind } file associated with .vhdr (header) "
277+ f"file { header_bname !r} in folder { header_dname !r} .\n Please make "
278+ f"sure the file{ detail } is named the same way as the .vhdr file, but "
279+ f"ending in { ext } (i.e. { alt_bname } ).\n The import will likely fail, "
280+ f"but if it goes through, you can ignore this message (the check "
281+ f"can misfire on networked file systems)." )
259282 return filename
260283
261284
0 commit comments