簡體   English   中英

如何從C#向Python腳本傳遞雙引號作為參數?

[英]How do you pass a double quote as an argument to python script from C#?

我的最終目標是將“ 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#中:

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

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

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM