最佳答案
这类问题以前也不同程度地被问过,但我觉得没有得到简明扼要的回答,所以我再问一遍。
我想用 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 或其他任何东西。不管你有什么黑客技术都没问题。
P.S. : 我运行的实际 Python 代码比这复杂得多,它返回我在 C # 中需要的输出,而 C # 代码将不断调用 Python 代码。
假装这是我的原则:
private void get_vals()
{
for (int i = 0; i < 100; i++)
{
run_cmd("code.py", i);
}
}