Java .dat文件到Python pickle

piv4azn7  于 2023-01-07  发布在  Java
关注(0)|答案(1)|浏览(161)

我有一些缓存文件,我把它们存储在java的**. dat文件中。这些是HashMap**数据结构:

ObjectOutputStream oos = new ObjectOutputStream(new 
FileOutputStream(cachePath));
oos.writeObject(common_value_Cache);
oos.close();

现在我想用我的python程序打开这些文件,并在相同的dictionary数据结构中读取它们:

withopen('/cache.dat', 'rb') as handle:
b = pickle.load(handle)

有什么我可以做的吗?我得到了很多错误,如:值错误:二进制模式不接受编码参数
如何在python中加载. dat文件?

fhg3lkii

fhg3lkii1#

你可以试试javaobj-py3
用于生成对HashMap结构进行编码的cache.json文件的Java代码

import java.io.IOException;

import java.io.ObjectOutputStream;
import java.io.FileOutputStream;
import java.util.HashMap;

public class SaveHashMap{
    public static void main(String[] args)throws IOException{
        HashMap<String,String> obj=new HashMap<String,String>();
        obj.put("foo","bar");
        obj.put("lorem","ipsum");
        obj.put("hello","world");
        ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("cache.dat"));
        oos.writeObject(obj);
        oos.close();
    }
}

然后,在执行上面的代码并使用pip 3安装包之后,安装javaobj-py 3

>>> import javaobj
>>> with open("cache.dat","rb") as f:
...     b=javaobj.loads(f.read())
... 
>>> print(b)
{'hello': 'world', 'lorem': 'ipsum', 'foo': 'bar'}

相关问题