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

Python脚本接收PowerShell传递的JSON命令行参数报错求助

解决方案:PowerShell传递JSON到Python脚本的参数问题

问题根源

你看到的Unexpected token ':'错误是PowerShell抛出的语法错误,不是Python的问题。PowerShell会把不带引号的{"Items":...}当成自己的脚本块/哈希表语法解析,而JSON的冒号用法不符合PowerShell的语法规则,所以直接触发了解析错误。

修正步骤

1. 修改PowerShell调用命令

必须把整个JSON字符串用引号包裹,让PowerShell把它作为一个完整的参数传递给Python:

  • 优先用单引号(PowerShell中单引号是原样字符串,不会解析内部转义符):
Python script.py '{"Items":[{"Name":"foo","File":"\\\\files\\foo\\foo.csv"},{"Name":"bar","File":"\\\\files\\bar\\bar.csv"},{"Name":"baz","File":"\\\\files\\baz\\baz.csv"}]}'
  • 如果JSON中包含单引号,改用双引号并转义内部的双引号(用`转义):
Python script.py "{`"Items`":[{`"Name`":`"foo`",`"File`":`"\\\\files\\foo\\foo.csv`"},{`"Name`":`"bar`",`"File`":`"\\\\files\\bar\\bar.csv`"},{`"Name`":`"baz`",`"File`":`"\\\\files\\baz\\baz.csv`"}]}"

2. 验证Python代码

你原来的Python代码本身是正确的,只要PowerShell正确传递参数,就能正常解析JSON为字典。可以添加打印语句验证接收到的参数:

import sys
import json

if len(sys.argv) > 1:
    # 先打印接收到的参数,确认是否完整
    print("接收到的参数:", sys.argv[1])
    d = json.loads(sys.argv[1])
    print("解析后的字典:", d)

额外提示

如果Power Automate生成的JSON内容动态变化,建议在PowerShell中先把JSON内容保存到变量,再传递给Python,避免手动转义出错:

$jsonContent = '{"Items":[{"Name":"foo","File":"\\\\files\\foo\\foo.csv"},{"Name":"bar","File":"\\\\files\\bar\\bar.csv"},{"Name":"baz","File":"\\\\files\\baz\\baz.csv"}]}'
Python script.py $jsonContent

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 18:24:55