Есть ли модуль Python для «размораживания» данных, замороженных с помощью Perl's Storable? - PullRequest
7 голосов
/ 30 марта 2011

У меня есть устаревшая база данных, которая содержит простые структуры данных (без ссылок CODE, слава богу), которые были написаны с использованием метода nfreeze модуля Storable в Perl.

Теперь мне нужно загрузить эти данные в приложение Python. Кто-нибудь знает о реализации Python Storable 'thaw? Google не помог мне.

Если до этого дойдет, я могу провести обратный инжиниринг формата данных из источника Storable , но я бы предпочел избежать этого веселья, если это уже сделано.

Чтобы выразить в коде: Для такой программы на Perl:

#!/usr/bin/perl
use strict;
use warnings;

use MIME::Base64;
use Storable qw/nfreeze/;

my $data = {
    'string' => 'something',
    'arrayref' => [1, 2, 'three'],
    'hashref' => {
        'a' => 'b',
    },
};

print encode_base64( nfreeze($data) );

Я за magic_function такой, что этот Питон:

#!/usr/bin/env python
import base64
import pprint
import sys

def magic_function(frozen):
    # A miracle happens
    return thawed

if __name__ == '__main__':
    frozen = base64.b64decode(sys.stdin.read())
    data = magic_function(frozen)
    pprint.pprint(data)

печать:

{'string': 'something', 'arrayref': [1, 2, 'three'], 'hashref': {'a': 'b'}}

при запуске с выходом программы Perl.

Ответы [ 2 ]

10 голосов
/ 30 марта 2011

Мне не сразу понятно, как далеко продвинется этот проект, но, похоже, он стремится делать то, что вы хотите:

http://gitorious.org/python-storable

5 голосов
/ 30 марта 2011

Если ваш первый вариант не работает, другой вариант - написать простой Perl-скрипт для размораживания данных, а затем записать его в JSON или YAML или в другом формате, с которым вы легко можете работать в Python.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...