首页 > 解决方案 > 使用来自 C# 的解析参数执行 Python 脚本

问题描述

正如您在上面的图片中看到的那样,我正在尝试执行一个 python 脚本,它返回给我推荐的电影 python 脚本正在等待的输入如下:

--movie_name "Iron Man" --top_n 10 1) 从 python 接受的方式

"--movie_name" "钢铁侠" "--top_n" "10" 2) 从 python 接受的方式

最后几个小时我正在寻找一种正确给予它们的方法,但我不能。你可以在图片中看到我的最后一次尝试。来自 Python图像,来自 vsCode 的图像

        string s = "\"Iron Man\"";
        string s1 = "\" --movie_name\"";
        string s2 = "\" --top_n \"";
        string s3 = "\"10\"";

        string arg = string.Format(@"\c C:\Users\Azizmaiden\Desktop\files\hello\KnnRecommender.py {0} {1} {2} {3}", s1, s, s2, s3);

        try
        {
            Process p1 = new Process();
            p1.StartInfo.FileName = arg;
            p1.StartInfo = new ProcessStartInfo(@"cmd.exe ", arg);
            p1.StartInfo.RedirectStandardOutput = true;
            p1.StartInfo.RedirectStandardInput = true;
            p1.StartInfo.UseShellExecute = false;
            p1.Start();
            p1.WaitForExit();
        }
        catch (Exception ex)
        {
            Console.WriteLine("There is a problem in your Python code: " + ex.Message);
        }
        Console.WriteLine("Press enter to exit...");
        Console.ReadLine();

标签: c#pythonironpython

解决方案


只需尝试这些第一行:

    string s = "Iron Man";
    string s1 = "--movie_name";
    string s2 = "--top_n";
    string s3 = "10";

    string arg = string.Format(@"/c ""C:\Users\Azizmaiden\Desktop\files\hello\KnnRecommender.py"" {0} ""{1}"" {2} {3}", s1, s, s2, s3);

所有像 --movie_name 这样的参数名称本身都必须没有“
您的电影名称必须被包围”,这在您的格式中更容易阅读。
如果您的 KnnRecommender.py 文件最终位于包含空格的路径中,则无论如何都必须用 " 包围它。


推荐阅读