[英]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.