使用C#4.0运行Python脚本错误非ascii字符
我最终希望能够将数据帧从Python返回到C。目前,我正在运行一个非常简单的控制台应用程序,尝试运行一个基本的Python脚本。这个脚本可以很好地编译和运行,但是当我从C#运行它时,我得到了与非ASCII字符相关的错误 我读过许多与此相关的文章,但似乎没有一篇能够解决我所面临的问题 错误 语法错误:文件C:\Program Files\Enthught\Canop中的非ASCII字符“\x90” 第1行的y32\App\appdata\canopy-1.5.2.2785.win-x86\python.exe,但没有编码 宣布;有关详细信息,请参阅 Thx提前为您提供任何帮助使用C#4.0运行Python脚本错误非ascii字符,c#,python,C#,Python,我最终希望能够将数据帧从Python返回到C。目前,我正在运行一个非常简单的控制台应用程序,尝试运行一个基本的Python脚本。这个脚本可以很好地编译和运行,但是当我从C#运行它时,我得到了与非ASCII字符相关的错误 我读过许多与此相关的文章,但似乎没有一篇能够解决我所面临的问题 错误 语法错误:文件C:\Program Files\Enthught\Canop中的非ASCII字符“\x90” 第1行的y32\App\appdata\canopy-1.5.2.2785.win-x86\pyth
static int test_python_canopy()
{
string cmd;
string args;
args = "C:\\Share\\Python\\test.py";
cmd = @"C:\Program Files\Enthought\Canopy32\App\appdata\canopy-1.5.2.2785.win-x86\python.exe";
cmd = "\"" + cmd + "\"";
ProcessStartInfo start = new ProcessStartInfo();
start.FileName = cmd;
start.Arguments = string.Format("{0} {1}", cmd, 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);
}
}
return 0;
}
对于
ProcessStartInfo
,FileName
应设置为要运行的可执行文件,而Arguments
应设置为要传递给该可执行文件的参数
在代码中,FileName
被正确设置为Python解释器<但是,第一个参数被设置为Python解释器。最终结果是C#试图执行以下命令:
C:\Program Files\Enthought\Canopy32\App\appdata\canopy-1.5.2.2785.win-x86\python.exe C:\Program Files\Enthought\Canopy32\App\appdata\canopy-1.5.2.2785.win-x86\python.exe C:\Share\Python\test.py
这意味着Python试图将Python可执行文件用作脚本,但这是行不通的。更改设置参数的行可以解决此问题:
start.Arguments = args;
我正在运行的Python脚本是#/usr/bin/python#--coding:utf-8--print“Hi!!”import sys path=sys.argv[0]#给定的1参数是路径sys.path.append(path)def MethodCall(OutputString):print OutputString MethodCall(“Hello World!”)L2#--编码:utf-8--