python - 用空格传递Python JSON参数

标签 python json powershell command-line quoting

我试图在命令提示符下将JSON作为参数传递给python脚本。如果JSON中的元素的值中没有空格,则它起作用,但是如果有空格,则它不起作用。
这是脚本

import json, sys, traceback
    if(len(sys.argv)>1):
    print(sys.argv[1])
    jsonInput = json.loads(sys.argv[1]);
    print(jsonInput['name'])
    print(jsonInput['kingdom'])
    print(jsonInput['slogan'])
在JSON之下作为power Shell中的参数传递。我的值中有空格,例如乔恩·雪诺
python C:\Users\user1\Desktop\myTest.py '{\"name\":\"Jon Snow\",\"kingdom\":\"Winterfell\",\"slogan\":\"King in the North\"}'
输出:
python : Traceback (most recent call last):
At line:1 char:1
+ python C:\Users\kiran.patil\Desktop\myTest.py '{\"name\":\"Jon Snow\" ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (Traceback (most recent call last)::String) [], RemoteException
    + FullyQualifiedErrorId : NativeCommandError
 
  File "C:\Users\User\Desktop\myTest.py", line 5, in <module>
    jsonInput = json.loads(sys.argv[1]);
  File "C:\Program Files\Python38\lib\json\__init__.py", line 357, in loads
    return _default_decoder.decode(s)
  File "C:\Program Files\Python38\lib\json\decoder.py", line 337, in decode
    obj, end = self.raw_decode(s, idx=_w(s, 0).end())
  File "C:\Program Files\Python38\lib\json\decoder.py", line 353, in raw_decode
    obj, end = self.scan_once(s, idx)
json.decoder.JSONDecodeError: Unterminated string starting at: line 1 column 9 (char 8)
请任何建议对其进行修复。

最佳答案

如果您使用\",则表示括起来的引号也是双引号。在Windows上,封闭的单引号不起作用,因此2个选项是

# Linux + Windows
python script.py "{\"name\":\"Jon Snow\",\"kingdom\":\"Winterfell\",\"slogan\":\"King in theNorth\"}"

# Linux only
python script.py '{"name":"Jon Snow","kingdom":"Winterfell","slogan":"King in theNorth"}'
Powershell shell
python script.py '{""name"":""Jon Snow"",""kingdom"":""Winterfell"",""slogan"":""King in theNorth""}'

关于python - 用空格传递Python JSON参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64449736/

相关文章:

javascript - 使用 JSON.search 返回 defiant.js 中的多个对象

java - 使用 JSON Parsing with volley 更新 ListView 的最佳方法

Python:将文本格式化为特定列

python - 覆盖 django admin 中的模板

python - 将 Python 请求库转换为 Nodejs

android - 使用 JSON 从 api 获取信息

powershell - 开始成绩单 : This host does not support transcription

c# - Powershell WMI 输出与 c# WMI 输出不匹配

powershell - 如何从 Get-AzureRmResourceGroup 标签检索键值对

python - 随机矩阵所有行的快速随机加权选择