Problème:Comment insérer des données dans un tableau JSON dans un fichier?
Je travaille sur un méta-projet de fichier, qui recueille des informations fichier d'un dossier et le stocke dans un fichier JSON.
Mon fichier vide JSON ressemble à ceci
db.json
{
"samples" : []
}
Maintenant, mon idée est de scanner chaque fichier et insérez chaque enregistrement dans un tableau d'échantillons comme celui-ci
db .json
{
"samples" : [
{
"file_name": "ba18524fe5d5c6e99b99c7da66dbbfa094ab8f61",
"file_new_location": "/home/admin/",
"file_path": "/home/admin/vt_files/ba18524fe5d5c6e99b99c7da66dbbfa094ab8f61",
"file_source": "VT",
"md5": "149c4ac4ba0863607e033d6a5721fee7",
"mime": "application_x-dosexec",
"severity": "high",
"sha256": "50bc946af55f0a5deb66f935229046c1ec74fb2233d71efa3ae064a073a771f5"
}
]
}
Mais mon problème est quand jamais j'essaie d'insérer des enregistrements, je ne peux pas insérer dans les échantillons, mais viennent en une seule ligne.
for file_original_name in files:
file_meta = {}
file_meta['file_name'] = file_original_name
file_meta['file_path'] = os.path.join(root,file_original_name)
file_meta['file_source'] = source
file_meta['severity'] = severity
file_meta['md5'] = md5(file_meta['file_path'])
file_meta['sha256'] = sha256(file_meta['file_path'])
mime = magic.Magic(mime=True)
file_meta['mime'] = mime.from_file(file_meta['file_path']).replace('/','_')
file_meta['file_new_location'] = '{}/{}/{}/{}'.format(default_root,severity,file_meta['mime'],file_original_name)
try:
extracted_new_dir = os.path.join(default_root,severity,file_meta['mime'])
if not os.path.isdir(extracted_new_dir):
os.makedirs(extracted_new_dir)
if delete:
move(file_meta['file_path'],file_meta['file_new_location'])
else:
copyfile(file_meta['file_path'],file_meta['file_new_location'])
print json.dumps(file_meta,sort_keys=True,indent=4)
except Exception as e:
print e
result[file_original_name] = (file_meta)
with open('db.json','a') as f:
json.dump(result , f)
Des suggestions sur comment résoudre ce problème?
@Sraw Je veux insérer dans le tableau. –
Je pense que vous devez d'abord charger le fichier json entier, puis le modifier comme si vous modifiez un 'dict/list', puis le vider à nouveau. – Sraw