如何将c#变量从windows窗体应用程序传递到python脚本
本文关键字:应用程序 脚本 python 窗体 windows 变量 | 更新日期: 2023-09-27 18:28:50
我已经成功地通过用c#编写的windows窗体应用程序中的按钮点击调用了一个python脚本,代码如下:
private void login_Click(object sender, EventArgs e)
{
System.Diagnostics.Process.Start("C:''Python27''Scripts''path''file.py");
}
现在我想将一个变量传递给python脚本。我试着把它作为一个论点来传递,但没有用(在php中这样工作):
private void login_Click(object sender, EventArgs e)
{
System.Diagnostics.Process.Start("C:''Python27''Scripts''path''file.py myVariable");
}
我在visual studio编译器中没有收到此代码的错误,但当我单击按钮启动python脚本时,我收到一个错误,上面写着"Win32异常未处理-系统找不到指定的文件"
我也尝试过,但没有成功——我如何从C#运行Python脚本?
您需要使用此处所示的启动信息。http://www.dotnetperls.com/process-start
ProcessStartInfo startInfo = new ProcessStartInfo();
startInfo.FileName = "C:''Python27''Scripts''path''file.py";
startInfo.Arguments = "myvariable";
try
{
using (Process exeProcess = Process.Start(startInfo))
{
//dostuff
exeProcess.WaitForExit();
}
}
catch
{
//log
throw;
}
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);