c# - 使用来自 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();
解决方案
只需尝试这些第一行:
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 文件最终位于包含空格的路径中,则无论如何都必须用 " 包围它。
推荐阅读
- android - 如何使用压缩文件系统替换android系统镜像?
- python - XGBoost。GPU 用于训练 CPU 进行推理
- javascript - 在时刻 js 上使用 endOf('quarter') 后时区发生变化
- javascript - 如何在 Javascript 中保护 SQLite 本地数据库?
- python - 如何在 tkinter python 模块的标签中传递每个项目的 sqlite 3 表的第二项?
- python - 如何加快即使使用 Numba 也很慢的计算
- javascript - REACT JS:如何在地图内向尚未启动的数组添加键?
- solidity - 从 ERC271 合约继承有什么意义?
- c# - asp-for 标签助手显示“CS1061”错误
- flutter - 如何向免费用户显示不同的页面,向付费用户显示不同的页面