You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Python的argparse与PowerShell中传递JSON字符串参数?

PowerShell中JSON参数解析失败的原因与解决方法

问题原因

PowerShell和CMD的命令行参数解析规则存在核心差异:

  • CMD中,双引号包裹的内容需用\"转义内部双引号,转义后的双引号会原样传递给Python,因此能正确解析JSON。
  • PowerShell中,单引号虽为原样字符串标识符,但实际传递参数时,若直接使用'{"key": "value"}'格式,部分场景下会导致内部双引号丢失(从报错信息可见,Python接收到的是无引号的{key: value, number: 42}),不符合JSON语法要求,触发解码错误;后续尝试将该字符串作为文件路径打开,自然也会失败。

解决方法

针对PowerShell环境,以下几种方式可可靠传递JSON参数:

方法1:双引号包裹+反引号转义内部双引号

PowerShell用反引号`作为转义字符,将整个JSON字符串用双引号包裹,内部每个双引号前添加反引号:

python script.py --json "{`"key`": `"value`", `"number`": 42}"

方法2:单引号包裹完整JSON字符串(适用于PowerShell 5.1及以上)

确保PowerShell版本在5.1或更高,直接用单引号包裹完整JSON字符串,PowerShell会原样保留内部双引号传递给Python:

python script.py --json '{"key": "value", "number": 42}'

方法3:传递JSON文件路径(适合复杂JSON)

若JSON内容较长或结构复杂,可将其写入文件(如data.json),直接传递文件路径避免转义麻烦:

python script.py --json ./data.json

方法4:使用Here-String传递复杂JSON

对于多行JSON,可借助PowerShell的Here-String特性定义字符串后传递:

$jsonContent = @"
{"key": "value", "number": 42, "nested": {"foo": "bar"}}
"@
python script.py --json $jsonContent

内容的提问来源于stack exchange,提问作者Freejack

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 00:05:05