From 4c9fb0b8b94bbd422dc0ea63c50c784624bf6be5 Mon Sep 17 00:00:00 2001 From: Peter LaFosse Date: Wed, 27 May 2020 09:01:19 -0400 Subject: Add context manager for BinaryViews in the python API --- python/__init__.py | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) (limited to 'python/__init__.py') diff --git a/python/__init__.py b/python/__init__.py index c046d51e..82f591db 100644 --- a/python/__init__.py +++ b/python/__init__.py @@ -255,3 +255,27 @@ def get_memory_usage_info(): core.BNFreeMemoryUsageInfo(info, count.value) return result + +class open_view(object): + """ + Context Manager for BinaryView objects + + :Example: + >>> from binaryninja import * + >>> with open_view("/bin/ls") as bv: + ... print(len(bv.functions)) + ... + 128 + + """ + def __init__(self, *args, **kwargs): + self.args = args + self.kwargs = kwargs + + def __enter__(self): + self.view = BinaryViewType.get_view_of_file(*self.args, **self.kwargs) + return self.view + + def __exit__(self, type, value, traceback): + if self.view is not None: + self.view.file.close() \ No newline at end of file -- cgit v1.3.1