From 7440ce8b01c472e483001be4d63d52e7767578d8 Mon Sep 17 00:00:00 2001 From: Patrick Chilton Date: Fri, 24 Mar 2023 22:56:13 +0100 Subject: [PATCH] Add mmap_mode option to allow writing to mmaped PLY files. --- plyfile.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/plyfile.py b/plyfile.py index f2f06fc..92a92c0 100644 --- a/plyfile.py +++ b/plyfile.py @@ -128,7 +128,7 @@ def _parse_header(stream): ) @staticmethod - def read(stream, mmap=True, known_list_len={}): + def read(stream, mmap=True, mmap_mode="c", known_list_len={}): """ Read PLY data from a readable file-like object or filename. @@ -171,6 +171,7 @@ def read(stream, mmap=True, known_list_len={}): data_stream = stream for elt in data: elt._read(data_stream, data.text, data.byte_order, mmap, + mmap_mode=mmap_mode, known_list_len=known_list_len.get(elt.name, {})) finally: if must_close: @@ -497,7 +498,7 @@ def describe(data, name, len_types={}, val_types={}, return elt - def _read(self, stream, text, byte_order, mmap, + def _read(self, stream, text, byte_order, mmap, mmap_mode, known_list_len={}): """ Read the actual data from a PLY file. @@ -581,7 +582,7 @@ def _read_mmap(self, stream, byte_order, known_list_len): if max_bytes < num_bytes: raise PlyElementParseError("early end-of-file", self, max_bytes // dtype.itemsize) - self._data = _np.memmap(stream, dtype, 'c', offset, self.count) + self._data = _np.memmap(stream, dtype, mmap_mode, offset, self.count) # Fix stream position stream.seek(offset + self.count * dtype.itemsize) # remove any extra properties added