首页 > 解决方案 > 如何使用python修改JSON文件中的多个值

问题描述

我正在尝试修改我的 JSON 文件,其中我需要将 file_name 替换为基本路径,如下所示:

data = {"images": [
    {
        "id": 1,
        "file_name": "Folder1/Folder2/Folder3/Folder4/1110.jpg",
        "height": 3024,
        "width": 4032
    },
    {
        "id": 2,
        "file_name": "Folder1/Folder2/Folder3/Folder4/1111.jpg",
        "height": 3024,
        "width": 4032
    },
    {
        "id": 3,
        "file_name": "Folder1/Folder2/Folder3/Folder4/1112.jpg",
        "height": 3024,
        "width": 4032
    }
]}

这是我尝试过的代码

data = json.load(open(".\example.json"))

首先,我使用以下代码检查了完整的文件名

for img in data['images']:
    print(img["file_name"])

以下是此单元格的输出

Folder1/Folder2/Folder3/Folder4/1110.jpg
Folder1/Folder2/Folder3/Folder4/1110.jpg
Folder1/Folder2/Folder3/Folder4/1110.jpg

然后我修改它以获得如下的基本路径

for feature in data['images']:
    feature['file_name'] = os.path.basename(feature["file_name"])
    print(feature['file_name'])

这是输出:

1110.jpg
1111.jpg
1112.jpg

当我试图将其转储到 JSON 文件中但我只得到一个文件名时。

data = {1110.jpg}

我想得到如下输出。请帮助我输入您的信息

data = {"images": [
    {
        "id": 1,
        "file_name": "1110.jpg",
        "height": 3024,
        "width": 4032
    },
    {
        "id": 2,
        "file_name": "1111.jpg",
        "height": 3024,
        "width": 4032
    },
    {
        "id": 3,
        "file_name": "1112.jpg",
        "height": 3024,
        "width": 4032
    }
]}

标签: pythonjson

解决方案


问题在这一行for feature in temp['images']:,请将其更改为for feature in data['images']

for feature in data['images']:
    feature['file_name'] = os.path.basename(feature["file_name"])
print(data)
[{'file_name': '1110.jpg', 'height': 3024, 'id': 1, 'width': 4032},
 {'file_name': '1111.jpg', 'height': 3024, 'id': 2, 'width': 4032},
 {'file_name': '1112.jpg', 'height': 3024, 'id': 3, 'width': 4032}]

推荐阅读