如何将任意字典存储到文件,以便也可以在Fortran中读取它?

时间:2018-06-21 14:26:13

标签: python pandas numpy dictionary

假设我们有一本字典

import numpy as np
d={}
d["s0"]=3
d["s1"]=np.int16(3)
d["s2"]=np.array("hello")
d["s3"]=np.array([2])
d["s4"]=np.linspace(0,2, 3)

保存此词典的一种方法是使用json。这意味着序列化数据并将其存储为列表。在这种情况下,可能会失去精度。

另一种方法是将其转换为pandas DataFrame并将其保存到hdf:

import pandas as pd
df=pd.DataFrame(d)
#dd.io.save("test.h5", d)
store = pd.HDFStore('store.h5')
store["data"]=df

但这失败了。我得到:

  ValueError: arrays must all be same length

第三种方法是使用深色:

dd.io.save("test.h5", d)

此方法的问题是它希望我的键为字符串,并且丢失键数据而不会引发错误:

    $h5ls test.h5
    s3                       Dataset {1}
    s4                       Dataset {3}

请注意,“ s0”,“ s1”和“ s2”未保存到文件,并且未报告任何错误。那么将python字典存储到hdf文件中最安全的方法是什么?

我不想使用pickle dump,因为在Fortran中很难读取。这个问题不是this question的重复,因为它显示了这些方法如何无法存储所需的数据。

1 个答案:

答案 0 :(得分:1)

因此,这不是给任何超级怪胎留下深刻印象的前沿答案,但是如果您需要可移植性,建议您使用INI文件。没有一种语言或平台无法读取或编写它。

这里是一个用于处理它们的FORTRAN库。

https://github.com/szaghi/FiNeR