我的最终目标是从C#向Python脚本传递一个“ json字符串”。
例如,在python脚本中,我希望获得sys.argv [1],如下所示:
'{"A":"Hello", "B":"world"}'
然后,我将可以使用:
mystring = sys.argv[1]
myjson = json.loads(mystring)
我无法获得以上信息。所以,我什至尝试得到这个:
{"A":"Hello", "B":"world"}
(这样,我可以在python中手动添加第一个和最后一个单引号)。
不幸的是,无论哪种情况,我都无法使用双引号。
在C#中,我尝试过:
string myarguments = "main.py \"{\"A\":\"Hello\", \"B\":\"world\"}\"";
var myProcessStartInfo = new ProcessStartInfo(Path_OF_PYTHON_EXE);
myProcessStartInfo.RedirectStandardOutput = true;
myProcessStartInfo.Arguments = myarguments;
var myProcess = new Process();
myProcess.StartInfo = myProcessStartInfo;
myProcess.Start();
我正在努力的部分是获取正确的字符串 myarguments ,该字符串将允许python脚本接收双引号作为参数。
使用上面的C#代码段,python脚本:
import sys
print(str(sys.argv))
print('arg0 : ' + sys.argv[0])
print('arg1 : ' + sys.argv[1])
打印以下内容:
['main.py', '{A:Hello, B:world}']
arg0 : main.py
arg1 : {A:Hello, B:world}
我在python中真正想要的是从这一行得到:print('arg1:'+ sys.argv [1]):
arg1 : {"A":"Hello", "B":"world"}
甚至更好:
arg1 : '{"A":"Hello", "B":"world"}'
我尝试了许多其他方案(试图在C#中转义双引号),但是没有一个给我python中正确的sys.argv。非常感谢您提供任何帮助!
答案 0 :(得分:0)
我想出了办法:
在C#中:
string myarguments = "main.py \"{\"\"A\"\":\"\"Hello\"\", \"\"B\"\":\"\"world\"\"}\" ";
在python中,print(str(sys.argv))打印:
['main.py', '{"A":"Hello","B":"world"}']