Strings (version 1.0.0)
index
strings.py

This file exports strings from binary file.
 
~# python3 -m doctest -v Strings.py
 
2 items had no tests:
    Strings.Strings.__init__
    Strings.main
4 items passed all tests:
   5 tests in Strings
   5 tests in Strings.Strings
  22 tests in Strings.Strings.analyse_character
   5 tests in Strings.Strings.reader
37 tests in 6 items.
37 passed and 0 failed.
Test passed.
 
>>> from io import BytesIO
>>> strings = Strings(BytesIO(b"\x00\x01abcde\x00ghijk\x01lmnopqrst\x00"))
>>> for line in strings.reader(): print(line)
abcde
lmnopqrst
>>> strings = Strings(BytesIO(b"\x00\x01abcde\x00ghijk\x01lmnopqrst\x00"), null_terminated=False)
>>> for line in strings.reader(): print(line)
abcde
ghijk
lmnopqrst
>>>

 
Classes
       
builtins.object
Strings

 
class Strings(builtins.object)
    Strings(file: _io._BufferedIOBase, minimum_length: int = 5, null_terminated: bool = True)
 
This class exports strings from binary file.
 
>>> from io import BytesIO
>>> strings = Strings(BytesIO(b"\x00\x01abcde\x00ghijk\x01lmnopqrst\x00"))
>>> for line in strings.reader(): print(line)
abcde
lmnopqrst
>>> strings = Strings(BytesIO(b"\x00\x01abcde\x00ghijk\x01lmnopqrst\x00"), null_terminated=False)
>>> for line in strings.reader(): print(line)
abcde
ghijk
lmnopqrst
>>>
 
  Methods defined here:
__init__(self, file: _io._BufferedIOBase, minimum_length: int = 5, null_terminated: bool = True)
Initialize self.  See help(type(self)) for accurate signature.
analyse_character(self, char: bytes) -> Tuple[bool, bool]
This function analyses a byte and returns boolean to know when a string is terminated.
 
>>> strings = Strings(None)
>>> strings.analyse_character(b'a')
(False, False)
>>> strings.analyse_character(b'\0')
(False, True)
>>> strings.current_string
'a'
>>> strings.analyse_character(b'\0')
(False, True)
>>> strings.analyse_character(b'\0')
(True, True)
>>> strings.current_unicode_string
'a'
>>> strings.analyse_character(b'\1')
(False, False)
>>> strings.current_string
''
>>> strings.current_unicode_string
''
>>> strings = Strings(None, null_terminated=False)
>>> strings.analyse_character(b'a')
(False, False)
>>> strings.analyse_character(b'\0')
(False, True)
>>> strings.current_string
'a'
>>> strings.analyse_character(b'\0')
(False, True)
>>> strings.analyse_character(b'\0')
(True, True)
>>> strings.current_unicode_string
'a'
>>> strings.analyse_character(b'a')
(False, False)
>>> strings.analyse_character(b'\1')
(False, True)
>>> strings.analyse_character(b'a')
(False, False)
>>> strings.analyse_character(b'\0')
(False, True)
>>> strings.analyse_character(b'\1')
(True, True)
>>>
reader(self) -> Iterator[str]
This function reads character after character and yield strings.
 
>>> from io import BytesIO
>>> strings = Strings(BytesIO(b"\x00\x01abcde\x00ghijk\x01lmnopqrst\x00"))
>>> for line in strings.reader(): print(line)
abcde
lmnopqrst
>>> strings = Strings(BytesIO(b"\x00\x01abcde\x00ghijk\x01lmnopqrst\x00"), null_terminated=False)
>>> for line in strings.reader(): print(line)
abcde
ghijk
lmnopqrst
>>>

Data descriptors defined here:
__dict__
dictionary for instance variables (if defined)
__weakref__
list of weak references to the object (if defined)

 
Data
        __all__ = ['Strings']
__author_email__ = 'mauricelambert434@gmail.com'
__copyright__ = '\nBinaryFileReader Copyright (C) 2021, 2025 Mau...ome to redistribute it\nunder certain conditions.\n'
__description__ = '\nThis file exports strings from binary file.\n'
__license__ = 'GPL-3.0 License'
__maintainer__ = 'Maurice Lambert'
__maintainer_email__ = 'mauricelambert434@gmail.com'
__url__ = 'https://github.com/mauricelambert/BinaryFileReader'

 
Author
        Maurice Lambert