Как unserialize данные от питона?

Ссылка скопирована
1 ответ

Есть питоновский скрипт, которые пишет в редис данные. Загвоздка в том, что он делает что-то типо бинарного serialize.
Что вижу при чтении из PHP:

Как unserialize данные от питона?

Как из php получить данные в читаемом формате?

P.S. Сам скрипт трогать нельзя, нужно читать то, что он там пишет.

Дополнительно:

Надо трогать скрипт, потому что он делает неправильно, зачем-то бинарные данные приводит к строкому представляют для отображения в REPL и это сохраняет. Да можно написать костыль для вытаскивание данных, но не факт что они не будут нормально преобразованны

  • Everything_is_bad, вопрос в скорость записи. Формируется это чудо плагином - pickle. JSON формируется медленнее. Как мне сообщил разраб.
  • Александр, разраб коряво делает запись, ему надо это исправить, ты не должен видеть никаких b". Ну и сразу pickle для питона, ты его скорее всего и не восстановишь. Если "JSON формируется медленнее" (что не факт, надо делать замеры), то для передачи между разными ЯП, тут нужен protobuf, а не pickle. Короче разраб, либо ленив, либо некомптитентен, но тут пока в любом случае его косяк.
  • На практике, если стоит такое условие, единственный вариант для вас - это
    конвертор из pickle в json на пайтоне, котрый вы будете дергать из пыха.
    pickle и json в пайтоне - часть стандартной библиотеки,
    скрипт будет в несколько строк, скорость пострадает,
    пайтон из пыха вполне дергается
    upd https://stackoverflow.com/questions/3040872/python...
  • https://github.com/zendframework/zend-serializer/b...
  • Вопрос конечно супер) мы можем работать только через одно место, посоветуйте как нам лучше это делать)
  • Дмитрий, не смог он осилить задачку =)
  • Александр, что вы подразумеваете под не смог?
  • Дмитрий, подразумеваю, что декодировать текст этот пакет не смог.
  • Александр, ну тогда стоит посмотреть версию picklе и поискать другие декодировщики. Они есть. Задача не сказать что бы уникальна

    Как unserialize данные от питона?

  • Вот такой же вопрос и там есть ответ SO
  • formats.kaitai.io/python_pickle/php.html

    Нужно решить такую задачу?

    Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

    Заказать помощь
    Лучший ответ
    1
    Анна SEO Ответ

    Для unserialize данных, которые были сериализованы на стороне Python, можно воспользоваться функцией `unserialize` в PHP. Однако, необходимо учитывать различия в формате сериализации между языками.

    Python использует свой собственный формат сериализации данных, который может быть несовместим с форматом PHP. Поэтому, для успешной десериализации данных Python в PHP, необходимо использовать библиотеку, которая позволит сконвертировать данные из одного формата в другой.

    Одним из популярных вариантов для работы с данными, сериализованными на стороне Python, является использование библиотеки `phpserialize`. Эта библиотека позволяет десериализовать данные Python в формат, понятный PHP.

    Пример кода для десериализации данных Python в PHP с использованием библиотеки `phpserialize`:

    // Подключаем библиотеку phpserialize
    require_once('path/to/phpserialize.php');
     
    // Сериализованные данные Python
    $serialized_data = '...';
     
    // Десериализуем данные
    $unserialized_data = unserialize(phpserialize_unserialize($serialized_data));
     
    // Выводим результат
    var_dump($unserialized_data);

    // Подключаем библиотеку phpserialize require_once('path/to/phpserialize.php'); // Сериализованные данные Python $serialized_data = '...'; // Десериализуем данные $unserialized_data = unserialize(phpserialize_unserialize($serialized_data)); // Выводим результат var_dump($unserialized_data);

    Помимо библиотеки `phpserialize`, существуют и другие инструменты и методы для работы с данными, сериализованными на стороне Python. Важно учитывать особенности каждого случая и выбирать подходящий способ десериализации в зависимости от конкретных данных и требований проекта.

    Другие ответы (0)

    Пока нет других ответов. Будьте первым, кто поможет автору.

    Ответить на вопрос

    комментарий

    Ваш адрес email не будет опубликован. Обязательные поля помечены *

    Вам также может быть интересно