2014-02-27 19 views
2

这是一个关于存储和加载数据的问题,特别是在Python中。我不完全确定这是合适的论坛,所以如果不是,请重新定向。存储与文件关联的元数据的位置?

我正在处理大约50个1000行的CSV文件,每个文件都有10个关联的元数据参数。什么是最好的方法来存储这个问题:

(一)所有的信息是人类可读的纯文本,并且非编程人员很容易关联数据和元数据。 (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。

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

+0

我建议在“堆栈溢出”中提出这个问题, – BurninLeo

回答

1

这个问题是一个暗示,所以它可能会被关闭,但让我提供内置的python module for handling json files的建议。 JSON在“人类可读性”方面保持了良好的平衡,并且几乎可以移植到任何语言或格式。你可以从你的原始数据结构来是这样的:

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

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