我正在尝试使用 Unity C#(别担心,很容易移植到普通 C#,但我目前没有允许我这样做的程序)使用以下代码运行 python 应用程序,它基本上只是启动一个python程序并读取和写入一些输入和输出:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System;
using System.Diagnostics;
using System.IO;
using System.Text;
public class PythonSetup : MonoBehaviour {
// Use this for initialization
void Start () {
SetupPython ();
}
void SetupPython() {
string fileName = @"C:\sample_script.py";
Process p = new Process();
p.StartInfo = new ProcessStartInfo(pythonExe, "YOUR PYTHON3 PATH")
{
RedirectStandardOutput = true,
UseShellExecute = false,
CreateNoWindow = true
};
p.Start();
UnityEngine.Debug.Log (p.StandardOutput.ReadToEnd ());
p.StandardInput.WriteLine ("\n hi \n");
UnityEngine.Debug.Log(p.StandardOutput.ReadToEnd());
p.WaitForExit();
}
}
位于 C:/sample_script.py 的 python 应用程序是:
print("Input here:")
i = input()
print(i)
C# 程序给了我错误:
InvalidOperationException: Standard input has not been redirected System.Diagnostics.Process.get_StandardInput () (wrapper remoting-invoke-with-check) System.Diagnostics.Process:get_StandardInput ()
提前感谢您的帮助!
要放入普通的C#项目,只需将UnityEngine.Debug.Log替换为Console.WriteLine,将Start()替换为Main()。
阿晨1998
相关分类