Я пытаюсь прочитать двоичный файл базы данных и проанализировать его, используя python.Никогда не делал ничего подобного с питоном, и у меня проблемы с "грязными" данными.Есть несколько значений NULL в данных, и я не уверен, как читать файлы побайтно, не проверяя терминатор NULL.
Как я могу прочитать этот файл со всеми этими грязными значениями в нем?
Я использовал этот метод, чтобы получить переменное число байтов из открытого файлового буфера (я не знаю, правильное ли это имя, но я бы уже вызвал file = open(file_path, "rb")
перед вызовом этогофункция в файле.
def getBytes(self, file, numBytes):
bArray = file.read(numBytes)
x=0
while x < numBytes:
if (bArray[x] < 32) or (bArray[x] > 126):
bArray[x] = 32
x+=1
charArray = bArray.decode("utf-8")
self.buffer += numBytes
return charArray
Я также получаю эту ошибку, даже когда проверяю только строку символов uft-8 без специальных символов. Так что это определенно не очень хорошая реализация.
Traceback (most recent call last):
File "D:\projects\git\pgdump_parser\src\python\PG_Dump_Parser\Source_Code\main.py", line 3, in <module>
Sp = Parser.Parser("./PG_Dump_Parser/Data/small_data.txt")
File "D:\projects\git\pgdump_parser\src\python\PG_Dump_Parser\Source_Code\Parser.py", line 17, in __init__
self.inData = self.getEntities()
File "D:\projects\git\pgdump_parser\src\python\PG_Dump_Parser\Source_Code\Parser.py", line 66, in getEntities
found = self.findNextCREATE(file)
File "D:\projects\git\pgdump_parser\src\python\PG_Dump_Parser\Source_Code\Parser.py", line 34, in findNextCREATE
byte = self.getBytes(file, 1)
File "D:\projects\git\pgdump_parser\src\python\PG_Dump_Parser\Source_Code\Parser.py", line 97, in getBytes
print("bArrayOld: %s \nx: %s" % (bArray[x], x))
IndexError: bytearray index out of range