如何将c#变量从windows窗体应用程序传递到python脚本

如何将c#变量从windows窗体应用程序传递到python脚本,c#,visual-studio-2010,python-2.7,C#,Visual Studio 2010,Python 2.7,我在用c#编写的windows窗体应用程序中通过单击按钮成功调用了python脚本,代码如下: private void login_Click(object sender, EventArgs e) { System.Diagnostics.Process.Start("C:\\Python27\\Scripts\\path\\file.py"); } 现在我想向python脚本传递一个变量。我尝试将其作为参数传递,但没有结果(在php中的工作方式如下): 我

我在用c#编写的windows窗体应用程序中通过单击按钮成功调用了python脚本,代码如下:

private void login_Click(object sender, EventArgs e)
    {
        System.Diagnostics.Process.Start("C:\\Python27\\Scripts\\path\\file.py");
    }
现在我想向python脚本传递一个变量。我尝试将其作为参数传递,但没有结果(在php中的工作方式如下):

我在visual studio编译器中没有收到与此代码相关的错误,但是当我单击按钮启动python脚本时,我收到一个错误,上面写着“Win32异常未处理-系统找不到指定的文件”


我也试过了,但没有用-

您需要使用此处所示的开始信息


process.start返回的进程是非托管的,应该在using.

中引用。要运行python脚本,需要将脚本路径传递给python解释器。现在,您要求Windows执行python脚本文件。这不是可执行文件,因此windows将无法启动它

另外,您调用start的方式使windows尝试启动文件
“file.py myVariable”
。相反,您希望它运行
“file.py”
,并将
“myVariable”
作为参数传递。请尝试以下代码

Process.Start(
  @"c:\path\to\python.exe",
  @"C:\Python27\Scripts\path\file.py myVariable");
编辑

从您的注释中可以看出,您希望传递的是变量
myVariable
的当前值,而不是文本。如果是这样,请尝试以下方法

string arg = string.Format(@"C:\Python27\Scripts\path\file.py {0}", myVariable);
Process.Start(
  @"c:\path\to\python.exe",
  arg);

我无法以这种方式传递变量,它确实启动了python脚本,但变量输出只是“myVariable”,而不是它应该是的值。可能是我这边的事。谢谢你的回复+1@GarettCosco更新以获得
myVariable
vs.的值。LiteralWorking就像一个符咒!非常感谢。
Process.Start(
  @"c:\path\to\python.exe",
  @"C:\Python27\Scripts\path\file.py myVariable");
string arg = string.Format(@"C:\Python27\Scripts\path\file.py {0}", myVariable);
Process.Start(
  @"c:\path\to\python.exe",
  arg);