Как передать двойную кавычку в качестве аргумента скрипту Python из C #? - PullRequest
0 голосов
/ 26 февраля 2019

Моя конечная цель - передать 'строку 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, это получить отline: print ('arg1:' + sys.argv [1]):

arg1 : {"A":"Hello", "B":"world"}

Или даже лучше:

arg1 : '{"A":"Hello", "B":"world"}'

Я пробовал много других сценариев (пытаясь избежать двойногоцитаты в C #), но ни один из них не дал мне правильный sys.argv в Python.Любая помощь в этом очень ценится!

1 Ответ

0 голосов
/ 12 марта 2019

Я выяснил путь:

В C #:

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

В python print (str (sys.argv)) печатает:

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