我从事的项目通常最终会在不同的上下文中生成大量数据,因此我必须以某种方式组织一切。
我目前的解决方案是确定一个文件夹结构,该结构将数据细分为一定程度(在一个文件夹中,我已经知道这些文件应该共享少量属性),然后将其余信息编码到文件名,用“ _”等分隔字段。
但是,我认为此解决方案有点笨拙,而且组织不佳。而且,如果某人(我)不小心将文件放到了错误的文件夹中,则在特定情况下它可能会不被注意等。(或者我必须将每个字段编码为文件名)。我想到的另一种解决方案是生成ID作为文件名,并保留将ID(文件名)转换为属性集的索引文件。但是,如果我丢失了该文件,那将是一场灾难。
出于这个原因,具体地说,我正在寻找一种在不更改文件名的情况下将元数据(例如json格式的任意属性)添加到文件的方法,因此名称仍可以是高级描述/标识。我使用mac并在我拥有的任何文件上单击信息时看到comments
(请参阅附件)。因此,如果我可以修改该字段或做类似的事情(最好也可以在linux中工作),则可以将json保存为文本,并在需要时进行解析。
有没有一种简单的方法可以使用python来实现?
注意:我正在寻找的解决方案不是this答案,因为更改没有与文件一起保存。
答案 0 :(得分:0)
一种方法是简单地将数据写到图像的末尾,并在需要时读取它:
import re
import json
def add_meta(image, meta):
with open(image, 'a+b') as f:
f.write(json.dumps(meta).encode('utf-8'))
def read_meta(image):
with open(image, 'rb') as f:
data = str(f.read())
meta = re.findall(r'xff.*({.*})\'\Z', data)[-1]
return meta
add_meta('image.jpg', {'Description': 'SO'})
print(read_meta('image.jpg'))
它为您提供输出:
{"Description": "SO"}
这种方法的缺点是元数据在图像的comments
部分中不可见。