如何执行并返回脚本结果 python 在 c#?

如何执行并返回脚本的结果 python 在 c#?

我正在尝试启动脚本 python 来自我的控制器。

我有 python.exe setup 在使用该命令创建的虚拟环境文件夹中
virtualenv

.

因此,只需用于测试目的,我就可以希望从我的脚本返回结果 phython:


# myscript.py
print "test"


并在我的申请表中显示它 asp.net mvc.

我有一个功能 run_cmd 来自连接的
https://coderoad.ru/11779143/
.
我试图为强制交互模式添加一个选项i,并调用 process.WaitForExit//, 但不成功。


namespace NpApp.Controllers
{
public class HomeController : Controller
{
public ActionResult Index/string returnUrl/
{
ViewBag.ReturnUrl = returnUrl;

ViewBag.textResult = run_cmd/"-i C:/path/to/virtualenv/myscript.py", "Some Input"/;

return View//;
}

private string run_cmd/string cmd, string args/
{
ProcessStartInfo start = new ProcessStartInfo//;
start.FileName = @"C:/path/to/virtualenv/Scripts/python.exe";
start.CreateNoWindow = true;
start.Arguments = string.Format/"{0} {1}", cmd, args/;
start.UseShellExecute = false;
start.RedirectStandardOutput = true;
using /Process process = Process.Start/start//
{
using /StreamReader reader = process.StandardOutput/
{
string result = reader.ReadToEnd//;
//Console.Write/result/;
process.WaitForExit//;
return result;
}
}
}
}
}


看起来 myscript.py 它永远不会有效。 但我没有犯有任何错误,只是我演示文稿中的空变量。

编辑:

我试图简化上述所有,因为我认为解释并获得答案会更容易。 最后,我真的需要使用一个名为的包 "nameparser" 并保持传输的参数的结果 name 在数据库中。 但如果我只能力量 run_cmd 返回字符串,我想我可以照顾 rest 从她。 这就是我认为这一点的原因 rest api 和 IronPython, 在评论中提到,这里可能无法为我工作。
已邀请:

冰洋

赞同来自:

好吧,我理解问题是什么,感谢来自评论的一些结论。 大多数情况下,这是途中的空白 python.exe 和 myscript.py. 事实证明我不需要它 28, 我们 29 . 我刚刚移动了虚拟环境 python 在没有空间的情况下,所有开始工作。 还要确保文件 myscript.py 被执行了。

这真的很有帮助:


string stderr = process.StandardError.ReadToEnd//;
string stdout = process.StandardOutput.ReadToEnd//;
Debug.WriteLine/"STDERR: " + stderr/;
Debug.WriteLine/"STDOUT: " + stdout/;


这显示了错误 python 并输出输出区域 Visual Studio.

要回复问题请先登录注册