在哪里存储与文件关联的元数据?

时间:2014-02-27 05:59:17

标签: python

这是一个关于存储和加载数据的问题,特别是在Python中。我不完全确定这是适当的论坛,所以如果不是,请重定向。

我正在处理大约50个1000行CSV文件,每个文件都有10个关联元数据参数。关于以下内容存储的最佳方法是什么:

(A)所有信息都是人类可读的纯文本,非编程人员很容易将数据与元数据相关联。 (B)将元数据和csv的每一列加载到python字典很方便。

我考虑了四种可能的解决方案:

(0)以前,我在文件名中存储了较少量的元数据。由于显而易见的原因,这很糟糕。

(1)为每个CSV文件分配一个ID号,为每个“ID.csv”命名,然后生成“metadata.csv”,将每个CSV ID号映射到其元数据。这里的缺点是使用ID号会降低人的可读性。 (要了解文件的内容,非编程人类读者必须手动检查“metadata.csv”)

(2)将元数据保留在CSV文件的顶部。这有一个缺点,我的程序需要执行两个步骤:(a)从文件顶部的任意数量的行中获取元数据,以及(b)告诉CSV阅读器(pandas.read_csv)忽略前几行

(3)将CSV转换为某些数据序列化格式,如YAML,然后我可以轻松地包含元数据。这有很容易将CSV的列加载到我的字典中,并不是每个人都知道YAML。

这个问题有什么聪明的解决方案吗?谢谢!

1 个答案:

答案 0 :(得分:2)

这个问题有点暗示,所以它可能会被关闭,但让我提出内置python module for handling json files的建议。 JSON保持了“人类可读性”的良好平衡,并且高度可移植到几乎任何语言或格式。您可以从原始数据构建为:

{ 
  "metadata":{"name":"foo", "status":"bar"},
  "data":[[1,2,3],[4,5,6],[....]]
}

其中data是您的原始CSV文件,元数据是包含您想要存储的任何数据的字典。此外,将“剥离”元数据并从此格式返回原始csv数据也很简单 - 所有这些都在内置python模块的范围内。