Я пытаюсь использовать 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();
}
}
Приложение Python, расположенное по адресу C: /sample_script.py, имеет вид:
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 ().