【问题标题】:How do you pass a double quote as an argument to python script from C#?如何将双引号作为参数从 C# 传递给 python 脚本?
【发布时间】:2019-07-19 11:29:47
【问题描述】:

我的最终目标是将“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# sn-p,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】:

我已经找到方法了:

在 C# 中:

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

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

['main.py', '{"A":"Hello","B":"world"}']

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多