Как прочитать Python-файл, написанный на маршале в C #? - PullRequest
0 голосов
/ 12 ноября 2018

Я работаю над преобразованием чат-бота цепочки марков из Python в C # для некоторых друзей, но у меня возникли некоторые трудности с языковой особенностью Python, с которой я раньше не сталкивался. Бот построен из pyborg, https://github.com/bdrewery/PyBorg.

Частью инициализации этого бота является чтение из файла words.dat и lines.dat для заполнения словарей, например так:

content = self.read_file("words.dat")
self.words = marshal.loads(content)
del content
content = self.read_file("lines.dat")
self.lines = marshal.loads(content)
del content

Оба этих файла полны результатов вызова «marshal.dumps» с большими объектами словаря, переданными в качестве аргументов, например:

f = open("words.dat", "wb")
s = marshal.dumps(self.words)
f.write(s)
f.close()
f = open("lines.dat", "wb")
s = marshal.dumps(self.lines)
f.write(s)
f.close()

Из того, что я смог собрать, модуль "маршала" Python отвечает за тип сериализации, при котором объекты преобразуются в байтовое представление, "специфичное для Python". https://docs.python.org/2/library/marshal.html

Я ожидаю, что эти файлы будут полны наборов ключ / значение, но я не смог найти никакой информации о том, как преобразовать из этого набора "маршала" в нечто, что я могу проанализировать как строку, список или словарь объекты в C #. Есть ли способ сделать это без выполнения внешних скриптов Python из моего приложения?

...