你如何从C#传递双引号作为python脚本的参数?

问题描述 投票:0回答:1

我的最终目标是将一个'json字符串'从C#传递给python脚本。

例如,在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。对此有任何帮助非常感谢!

c# python-3.x arguments escaping double-quotes
1个回答
0
投票

我已经找到了方法:

在C#中:

string myarguments = "main.py \"{\"\"A\"\":\"\"Hello\"\", \"\"B\"\":\"\"world\"\"}\" ";

在python中,print(str(sys.argv))打印:

['main.py', '{"A":"Hello","B":"world"}']
© www.soinside.com 2019 - 2024. All rights reserved.