这类问题以前也有不同程度的问过,但我觉得回答得不够简洁,所以又问了一遍。
我想在 Python 中运行一个脚本。假设是这样的:
if __name__ == '__main__':
with open(sys.argv[1], 'r') as f:
s = f.read()
print s
它获取文件位置,读取它,然后打印其内容。没那么复杂。
好的,那么我如何在 C# 中运行它?
这就是我现在所拥有的:
private void run_cmd(string cmd, string args)
{
ProcessStartInfo start = new ProcessStartInfo();
start.FileName = cmd;
start.Arguments = 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);
}
}
}
当我通过code.py
位置cmd
和filename
位置时args
它不起作用。有人告诉我我应该python.exe
作为传递cmd
,然后code.py filename
作为传递args
。
我一直在寻找一段时间,只能找到建议使用 IronPython 之类的人。但是必须有一种方法可以从 C# 调用 Python 脚本。
一些澄清:
我需要从 C# 运行它,我需要捕获输出,而且我不能使用 IronPython 或其他任何东西。无论你有什么黑客都可以。
PS:我实际运行的 Python 代码比这复杂得多,它会返回我在 C# 中需要的输出,而 C# 代码会不断调用 Python 代码。
假装这是我的代码:
private void get_vals()
{
for (int i = 0; i < 100; i++)
{
run_cmd("code.py", i);
}
}