我试图在命令提示符下将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/