不带反斜杠的Python-JSON编写

2024-06-06 23:02:05 发布

您现在位置:Python中文网/ 问答频道 /正文

  • 列表项

我有一个“quad”文件夹,其中有两个文件(oracle\u 1.sql和oracle\u 2.sql) 和一个'config'文件夹配置.json'文件。你知道吗

我的代码如下:

import os, json
quadversion = ("develop-62")
x = os.listdir("quad/")
i=0
listscripts = []

while (len(x)) > i:
    script = ('{"ignoreErrors": False, "script": "quad/lma/dba-tests/'+(quadversion)+'/scripts/'+(x[i])+'"}')
    i+=1
    listscripts.append(script)

with open('config/config.json', 'r+') as f:
    data = json.load(f)

    tmp = data['containers']['runtimeEnvironment']['data']['properties']['sqlScripts']['value']
    data['containers']['runtimeEnvironment']['data']['properties']['sqlScripts']['value'] = listscripts

    f.seek(0)
    f.write(json.dumps(data, indent = 4, sort_keys=True))
    f.truncate()

它在JSON文件上返回反斜杠-名为“value”的键:

{
    "containers": {
        "runtimeEnvironment": {
            "data": {
                "properties": {
                    "sqlScripts": {
                        "type": "SqlScripts",
                        "value": [
                            "{\"ignoreErrors\": False, \"script\": \"quad/lma/dba-tests/develop-62/scripts/oracle_1.sql\"}",
                            "{\"ignoreErrors\": False, \"script\": \"quad/lma/dba-tests/develop-62/scripts/oracle_2.sql\"}"
                        ]
                    }

结果可能是这个叫做“value”的键:

"value": [
          {"ignoreErrors": False, "script": "quad/lma/dba-tests/develop-62/scripts/oracle_1.sql"},
          {"ignoreErrors": False, "script": "quad/lma/dba-tests/develop-62/scripts/oracle_2.sql"}
         ]

Tags: 文件jsonfalsesqldatavaluescriptsscript
1条回答
网友
1楼 · 发布于 2024-06-06 23:02:05

原因是listscript变量是strings列表,而不是字典列表。 你的script必须是一本字典:

while (len(x)) > i:
    script = {"ignoreErrors": False, "script": "quad/lma/dba-tests/" + quadversion + "/scripts/" + x[i]}
    i+=1
    listscripts.append(script)

相关问题 更多 >