'How to add each list entry as an entry to a json file in Python?

I have the following list printed iteratively:

/home/onur/PycharmProjects/file-tagging/venv/bin/activate.ps1
/home/onur/PycharmProjects/file-tagging/venv/bin/f2py3
/home/onur/PycharmProjects/file-tagging/venv/bin/activate.fish
/home/onur/PycharmProjects/file-tagging/venv/bin/activate.csh
/home/onur/PycharmProjects/file-tagging/venv/bin/f2py
/home/onur/PycharmProjects/file-tagging/venv/bin/python3
/home/onur/PycharmProjects/file-tagging/venv/bin/pip
/home/onur/PycharmProjects/file-tagging/venv/bin/python3.9
/home/onur/PycharmProjects/file-tagging/venv/bin/activate_this.py
/home/onur/PycharmProjects/file-tagging/venv/bin/wheel3
/home/onur/PycharmProjects/file-tagging/venv/bin/python
/home/onur/PycharmProjects/file-tagging/venv/bin/wheel-3.9
/home/onur/PycharmProjects/file-tagging/venv/bin/pip-3.9
/home/onur/PycharmProjects/file-tagging/venv/bin/pip3.9
/home/onur/PycharmProjects/file-tagging/venv/bin/wheel
/home/onur/PycharmProjects/file-tagging/venv/bin/activate
/home/onur/PycharmProjects/file-tagging/venv/pyvenv.cfg
/home/onur/PycharmProjects/file-tagging/log.json
/home/onur/PycharmProjects/file-tagging/main.py
/home/onur/PycharmProjects/file-tagging/hello_world.dat
/home/onur/PycharmProjects/file-tagging/b.exe
/home/onur/PycharmProjects/file-tagging/world_builder.spec
/home/onur/PycharmProjects/file-tagging/.idea/inspectionProfiles/Project_Default.xml
/home/onur/PycharmProjects/file-tagging/.idea/inspectionProfiles/profiles_settings.xml
/home/onur/PycharmProjects/file-tagging/.idea/.gitignore
/home/onur/PycharmProjects/file-tagging/.idea/modules.xml
/home/onur/PycharmProjects/file-tagging/.idea/file-tagging.iml
/home/onur/PycharmProjects/file-tagging/.idea/misc.xml
/home/onur/PycharmProjects/file-tagging/.idea/workspace.xml
/home/onur/PycharmProjects/file-tagging/content-log.txt

I am trying to save these files to a JSON entry like this:

data_entry = {"path": "/home/onur/PycharmProjects/file-tagging/.idea/workspace.xml", "tags": []},

Every entry will have a tags object, which will be an empty list. This is because a single path could have many associated tags.

My goal is to initialize logs.json with every single element in the path lists each with a tag object containing an empty list. Then I want to be able to access this list.

The following is my attempt at populating path with every entry in the list but it didn't work:

import json

data_entry = {"path": "", "tags": []},

with open('log.json', 'w+') as read_file:
    for i in data_list:
        print(i)
        json.dump(i,read_file, indent=1)

Where am I going wrong?



Solution 1:[1]

 path_list = []

for i in data_list.splitlines():
    data_entry = {"path": i, "tags": []}
    path_list.append(data_entry)


with open('log.json', 'w+') as read_file:
    json.dump(path_list, read_file, indent=1)

output log.json

 [
 {
  "path": "/home/onur/PycharmProjects/file-tagging/venv/bin/activate.ps1",
  "tags": []
 },
 {
  "path": "/home/onur/PycharmProjects/file-tagging/venv/bin/f2py3",
  "tags": []
 },
 {
  "path": "/home/onur/PycharmProjects/file-tagging/venv/bin/activate.fish",
  "tags": []
 },
 {
  "path": "/home/onur/PycharmProjects/file-tagging/venv/bin/activate.csh",
  "tags": []
 }...]

or you can go with

{
    "/home/onur/PycharmProjects/file-tagging/venv/bin/activate.ps1": tags[],
    "/home/onur/PycharmProjects/file-tagging/venv/bin/f2py3": tags[],
    ...
}

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 Poonam Adhav