danielhrisca / asammdf

Fast Python reader and editor for ASAM MDF / MF4 (Measurement Data Format) files
GNU Lesser General Public License v3.0
633 stars 224 forks source link

PermissionError during resample() for files with (video?) attachment #1018

Closed ASAA-Team closed 4 months ago

ASAA-Team commented 4 months ago

Hi, I'm getting a permission problem for .mf4 files with attachments.

Python version

'python=3.8.19 (default, Mar 20 2024, 19:55:45) [MSC v.1916 64 bit (AMD64)]' 'os=Windows-10-10.0.19045' 'numpy=1.24.4' 'asammdf=7.4.2'

Code

MDF version

4.10

Code snippet

with MDF(filepath) as mf4_file:
    mf4 = mf4_file.resample(raster=0.01)

Traceback

Traceback (most recent call last):
  File "C:\Program Files (x86)\MyApplication\MyPythonEnvironment\lib\site-packages\asammdf\blocks\v4_blocks.py", line 168, in __init__
    self.address = address = kwargs["address"]
KeyError: 'address'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
  File "<string>", line 2, in execute
  File "path_to_my_python_executable", line 88, in myfunction
    mf4 = mf4_file.resample(raster=0.01)
  File "C:\Program Files (x86)\MyApplication\MyPythonEnvironment\lib\site-packages\asammdf\mdf.py", line 3144, in resample
    dg_cntr = mdf.append(
  File "C:\Program Files (x86)\MyApplication\MyPythonEnvironment\lib\site-packages\asammdf\blocks\mdf_v4.py", line 3007, in append
    attachment_index = self.attach(
  File "C:\Program Files (x86)\MyApplication\MyPythonEnvironment\lib\site-packages\asammdf\blocks\mdf_v4.py", line 6230, in attach
    at_block = AttachmentBlock(
  File "C:\Program Files (x86)\MyApplication\MyPythonEnvironment\lib\site-packages\asammdf\blocks\v4_blocks.py", line 251, in __init__
    file_name.write_bytes(data)
  File "C:\Program Files (x86)\MyApplication\MyPythonEnvironment\lib\pathlib.py", line 1245, in write_bytes
    with self.open(mode='wb') as f:
  File "C:\Program Files (x86)\MyApplication\MyPythonEnvironment\lib\pathlib.py", line 1222, in open
    return io.open(self, mode, buffering, encoding, errors, newline,
  File "C:\Program Files (x86)\MyApplication\MyPythonEnvironment\lib\pathlib.py", line 1078, in _opener
    return self._accessor.open(self, flags, mode)
PermissionError: [Errno 13] Permission denied: 'NameOfMyVideoFileThatIsAttachedToTheMF4File.avi'

Description

We are shipping our python environment with our software, therefore the code will be located in the Program Files folder, which are not writable without admin rights. I believe this is the reason of the mentioned exception that is thrown during the mdf.resample() call. The same mf4 file works when the code/python is in a folder where I have full write access. The mf4 file needs to have an attachment (in this case a video file). The mf4 file and the video.avi file are stored and used from the same folder, the attachment is not embedded. The folder for the data is writable by any user.

I also tried with specifying a "temporary_folder", but it didn't change anything. I'm a bit out of ideas. I also don't quite understand why the resample needs write access to the attached video file?

Any help would be appreciated. Let me know if it's not reproducible and/or some details about the whole issue are missing. Thanks a lot.

danielhrisca commented 4 months ago

@ASAA-Team please try the development branch code

ASAA-Team commented 4 months ago

@danielhrisca I can confirm. Your changes fix this issue. Thanks!

What is the timeline for the next release that will include this fix?