我试图通过终端使用子进程传递一个json字典作为参数。字典总是与我手动通过终端传递时不同。我正在使用此代码进行子流程
subprocess.call("python ../power_supply_gui/PowerSupplyControl.py "+ "{\"CHANNEL\":\"d\",\"VOLT\":\"1\",\"CURRENTLIMIT\":\"1\",\"ENABLE\":\"1\"}",shell=True)
当我在其他程序中阅读时,我应该得到这个。 {" CHANNEL":" d"" VOLT":" 1"" CURRENTLIMIT":" 1"" ENABLE":" 1"}
但我得到了这个
{CHANNEL:d,VOLT:1,CURRENTLIMIT:1,使能:1}
这是被调用的程序正在读取参数并输出它
的方式print sys.argv[1]
print type(sys.argv[1])
commandDictionary=json.loads(sys.argv[1])
答案 0 :(得分:2)
将字典转换为json字符串会在冒号后面添加一个空格,这意味着在空格之前和空格之后将其拆分为不同的参数。如果您希望此功能正常,请尝试使用str(dictionary).replace(" ","")
删除空格
作为论点。