我有一个从另一个进程调用的脚本,它接收一个json字符串的输入。
import sys
import json
script_name, json_in = sys.argv
我的json看起来像是:
'{"key1":"val1", "key2":[val2, val3], "key3":"val4"}'
当我打印python收到的内容并存储在json_in
中时,它看起来像:
{key1:val1, key2:[val2, val3], key:val4}
当我到达json_in
时,单步执行pdb,它的值是:
"'{key:val1, key2:[val2, vale3], key:val4}'"
我在Ubuntu上没有遇到这个问题,但是当我在Windows上使用相同的脚本时它不再有效。
如果您复制并粘贴传递给argv的完全相同的输入,则该脚本可以正常工作。所以我能得出的唯一结论是,argv以某种方式剥离双引号?我没有找到任何可能描述这种情况的文档(尤其是当它适用于Ubuntu时)。
有谁知道它被剥夺的原因?
python函数由javascript函数调用,但即使我只是使用
从终端调用python scipt>>> python file_name.py '{"key1":"val1", "key2":[val2, val3], "key3":"val4"}'
我得到了同样的错误。如果将json_in
变量设置为相同的值,或者在Ubuntu终端中以完全相同的方式调用它,则没有问题。