gpt4 book ai didi

尽管文件存在并设置工作目录,C# Process.Start() 仍未启动

转载 作者:行者123 更新时间:2023-12-05 07:32:31 26 4
gpt4 key购买 nike

Question update

我正在尝试在 Unity 中使用 C# 脚本来调用 python 程序。在点击这两个链接之后:

How do I run a Python script from C#?

Process.Start() not starting the .exe file (works when run manually)

我无法让我的 C# 脚本调用 python 程序。我知道这不是我的 python 脚本的问题,因为我可以在终端中毫无问题地运行该程序。

public class JsonStream : MonoBehaviour
{
private string GetStream()
{
ProcessStartInfo start = new ProcessStartInfo();

//none of the paths work, the uncommented variables return true when using File.Exists
//while the commented variables return false
start.FileName = "/Library/Frameworks/Python.framework/Versions/3.6/bin/python3";
//start.FileName = "\"/Library/Frameworks/Python.framework/Versions/3.6/bin/python3\"";

start.Arguments = Directory.GetCurrentDirectory() + "/Assets/googlesheetspyprojectbatch/stream.py";
//start.Arguments = "\"" + Directory.GetCurrentDirectory() + "/Assets/googlesheetspyprojectbatch/stream.py" + "\"";

start.WorkingDirectory = Directory.GetCurrentDirectory() + "/Assets/googlesheetspyprojectbatch";
//start.WorkingDirectory = "\"" + Directory.GetCurrentDirectory() + "/Assets/googlesheetspyprojectbatch" + "\"";

start.UseShellExecute = false;
start.RedirectStandardOutput = true;
start.ErrorDialog = true;
start.RedirectStandardError = true;

using (Process process = Process.Start(start))
{
using (StreamReader reader = process.StandardOutput)
{
string result = reader.ReadToEnd();
return result;
}
}
}

public void DoEverythingStream()
{
UnityEngine.Debug.Log("Doing Stream");
string json_text = GetStream();
string[] games = json_text.Trim().Split('\n');
foreach (string game in games)
{
UnityEngine.Debug.Log(game);
}
}
}

运行该程序不会引发任何错误,但也不会输出任何内容。有谁知道我的程序可能有什么问题吗?谢谢!

最佳答案

老问题,但我一直在努力弄清楚为什么 C# (Unity) 没有运行我的 Python 文件,即使手动命令提示符可以。

通过将我的 python 脚本的路径放在三重双引号 (""") 中,C# 能够运行该脚本。

例子:

string fileName = @"""PATH\TO\YOUR\SCRIPT.PY""";
string pythonPath = @"PATH\TO\PYTHON.EXE";
System.Diagnostics.Process p = new System.Diagnostics.Process();
p.StartInfo = new System.Diagnostics.ProcessStartInfo(pythonPath, fileName)
{
RedirectStandardOutput = true,
UseShellExecute = false,
CreateNoWindow = true
};
p.Start();

关于尽管文件存在并设置工作目录,C# Process.Start() 仍未启动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51185004/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com