【发布时间】:2020-09-05 07:03:39
【问题描述】:
我想将 2D 数组和 1D 向量传递给 python 脚本,并在 C# 中以 1D 向量接收输出。到目前为止,我一直关注这个视频:
https://www.youtube.com/watch?time_continue=1&v=g1VWGdHRkHs&feature=emb_logo
这里只展示了如何将字符串传递给python。
更新:
我正在合并@Danon 的方法。到目前为止,我有这个代码:
static void Main(string[] args)
{
double[] a = { 1, 2, 3, 4, 5 };
List<double> lst = a.ToList();
string jsona = new JavaScriptSerializer().Serialize(lst);
var psi = new ProcessStartInfo();
psi.FileName = @"C:\Users\lavni\Python\Python38\python.exe";
var script = @"D:\test.py";
psi.Arguments = string.Format("{0} {1}", script, jsona);
psi.UseShellExecute = false;
psi.CreateNoWindow = true;
psi.RedirectStandardOutput = true;
psi.RedirectStandardError = true;
var errors = "";
var results = "";
using (var process = Process.Start(psi))
{
errors = process.StandardError.ReadToEnd();
results = process.StandardOutput.ReadToEnd();
Console.WriteLine("Errors");
Console.WriteLine(errors);
Console.WriteLine();
Console.WriteLine("Results");
Console.WriteLine(results);
}
Console.Read();
}
我有以下 python test.py。这只是将向量乘以 5 并以字符串形式接收输出:
import sys
import json
import numpy as np
data = json.loads(sys.argv[1])
res = np.array(data)
res = res*5
print(res)
现在,我可以在 C# 中传递一个向量并以字符串形式接收输出。现在,问题是我能否将输出作为 C# 中的列表而不是字符串接收。另外,在二维数组的情况下该怎么办。由于出现错误,它不能作为列表传递。
【问题讨论】:
标签: python c# parameter-passing