Reading python peak data stream in Android

I have this file containing the Iberian peak data stream. I have to read the contents of this file in Android.

For example, if I wanted to read this data stream in python, I would just use the following code

queue = pickle.load(open('filename', 'rb'))

I want to achieve the same thing in Android so that I can read this pickle stream data and store it in some kind of collection.

How can i achieve this?

+4
source share
1 answer

UPDATE: this only works for mismatch protocols 2and 3.

, Unpickler Pyrolite ( MIT) . Java, Android - Java. - :

InputStream stream = new FileInputStream("filename");
Unpickler unpickler = new Unpickler();
Object data = unpickler.load(stream);
// And cast *data* to the appropriate type.

:

import java.io.FileInputStream;
import java.io.InputStream;
import net.razorvine.pickle.Unpickler;

, :

PYTHON    ---->     JAVA
------              ----
None                null
bool                boolean
int                 int
long                long or BigInteger  (depending on size)
string              String
unicode             String
complex             net.razorvine.pickle.objects.ComplexNumber
datetime.date       java.util.Calendar
datetime.datetime   java.util.Calendar
datetime.time       java.util.Calendar
datetime.timedelta  net.razorvine.pickle.objects.TimeDelta
float               double   (float isn't used) 
array.array         array of appropriate primitive type (char, int, short, long, float, double)
list                java.util.List<Object>
tuple               Object[]
set                 java.util.Set
dict                java.util.Map
bytes               byte[]
bytearray           byte[]
decimal             BigDecimal    
custom class        Map<String, Object>  (dict with class attributes including its name in "__class__")

:

. Java , . . , .


UPDATE: (0-3) , 0 1, 2 3.

python, :

import pickle

class Data(object):
    def __init__(self):
        self.x = 12

data = Data()

for p in [0, 1, 2]:
    with open('data.{}'.format(p), 'wb') as fh:
        pickle.dump(data, fh, protocol=p)

# Python 3 only.
with open('data.3', 'wb') as fh:
    pickle.dump(data, fh, protocol=3)

java- :

import java.io.FileInputStream;
import java.io.InputStream;
import java.io.IOException;
import java.util.Map;
import net.razorvine.pickle.Unpickler;

public class Test {
    public static void main(String[] args) throws IOException {
        String filename = args[0];
        InputStream inputStream = new FileInputStream(filename);
        Unpickler unpickler = new Unpickler();
        Map<String, Object> data = (Map<String, Object>)unpickler.load(inputStream);
    }
}

data.0 data.1 :

Exception in thread "main" net.razorvine.pickle.PickleException: expected zero arguments for construction of ClassDict (for copy_reg._reconstructor)
  at net.razorvine.pickle.objects.ClassDictConstructor.construct(ClassDictConstructor.java:23)
  at net.razorvine.pickle.Unpickler.load_reduce(Unpickler.java:617)
  at net.razorvine.pickle.Unpickler.dispatch(Unpickler.java:170)
  at net.razorvine.pickle.Unpickler.load(Unpickler.java:84)
  at Test.main(Test.java:13)

data.2 data.3 .

+6

Source: https://habr.com/ru/post/1527066/


All Articles