我有一个Richtextbox,我在其中插入以下字符串值:-Archit Panda。
但是我从python脚本获取的输出仅为“ Archit”。
按钮上的C#代码:-
私有无效按钮13_Click(对象发送者,RoutedEventArgs e) {
TextRange textRange = new TextRange(richTextBox1.Document.ContentStart,richTextBox1.Document.ContentEnd);
string str = textRange.Text;
string FileName = @"C:\Users\Archit\AppData\Local\Programs\Python\Python37-32\python.exe";
// string myPythonApp = @"""C:\Users\Archit\Documents\Visual studio 2010\Projects\WpfApplication1\WpfApplication1\blockchain.py""";
string myPythonApp = @"blockchain.py";
ProcessStartInfo myProcessStartInfo = new ProcessStartInfo(FileName);
myProcessStartInfo.UseShellExecute = false;
myProcessStartInfo.RedirectStandardOutput = true;
//Console.WriteLine(splitted.ToString());
myProcessStartInfo.Arguments = myPythonApp+ " " +str;
Process myProcess = new Process();
myProcess.StartInfo = myProcessStartInfo;
myProcess.Start();
StreamReader myStreamReader = myProcess.StandardOutput;
string myString = myStreamReader.ReadLine();
myProcess.WaitForExit();
myProcess.Close();
Console.WriteLine("Value received from script: " + myString);
}
Python脚本:-
导入系统
x = sys.argv [1] 打印(x)
我想输出为“ Archit Panda”。 你能告诉我我做错了什么吗?
答案 0 :(得分:0)
如果要接受参数,然后将其发送给“ Archit Panda”,就像将其发送到命令行一样。
python blockchain.py Archit Panda
在您的Python脚本中,您仅在寻找argv [1],即Archit。 argv [2]是熊猫。如果要在Python脚本中传递参数,则可以循环遍历它们,也可以转义C#应用程序中的空格并发送类似的内容。 "Archit\ Panda"
或"'Archit Panda'"
命令行选项
tmp$ python3 test.py Archit Panda
Archit
tmp$ python3 test.py 'Archit Panda'
Archit Panda
tmp$ python3 test.py Archit\ Panda
Archit Panda
tmp$ python3 test.py 'Archit Panda can send a lot of text to this argument.'
Archit Panda can send a lot of text to this argument.
如果使用引号,请替换此行。
myProcessStartInfo.Arguments = myPythonApp+ " " +str;
使用
myProcessStartInfo.Arguments = myPythonApp+ " \"" +str+"\"";
希望这可以帮助您