从 PyCharm 中的运行配置传递 JSON 作为参数

问题描述 投票:0回答:2

有人可以告诉我如何从运行配置的参数字段传递 JSON 作为脚本参数吗?

我正在尝试传递此 JSON:

{"beam":5,"max_len_a":1.2,"max_len_b":10}

尝试过:

'{"beam":5,"max_len_a":1.2,"max_len_b":10}'

"{"beam":5,"max_len_a":1.2,"max_len_b":10}"

\"{"beam":5,"max_len_a":1.2,"max_len_b":10}\"

"{\"beam\":5,\"max_len_a\":1.2,\"max_len_b\":10}"

全部失败。

python json parameters pycharm escaping
2个回答
3
投票

传递问题中的示例参数相对简单。唯一适用的规则是引号 (

"
) 必须使用反斜杠 (
\"
) 进行转义。有关应用更多规则的更复杂示例,请参阅 Pycharm 删除参数字段中的引号

运行/调试配置:Python

配置选项卡

指定脚本参数时,请遵循以下规则:

(...)

  • 如果脚本参数包含双引号,请使用反斜杠转义双引号,

示例 JSON 字符串:

{"beam":5,"max_len_a":1.2,"max_len_b":10}

应写为:

{\"beam\":5,\"max_len_a\":1.2,\"max_len_b\":10}

然后您可以使用脚本轻松地将参数转换为 JSON 对象

import json
import sys

your_string = sys.argv[1]
z = json.loads(your_string)

以下屏幕截图显示了运行配置:

enter image description here


0
投票

如果您使用 argparse 并有这样的参数:

import argparse

parser = argparse.ArgumentParser(description='Demo-Tool')    
parser.add_argument('--params', type=str, help='JSON-serialized params dict')

您需要使用反斜杠转义引号并在 JSON 周围添加引号。以下在运行配置中为我解决了这个问题:

--params "{\"beam\":5,\"max_len_a\":1.2,\"max_len_b\":10}"
    
© www.soinside.com 2019 - 2024. All rights reserved.