“Microsoft.Scripting.SyntaxErrorException” 5C

用C#界面调用python脚本,使用IronPython,在调用时屡次出现此问题,不知道该如何解决?
首先附上我的Python代码,此处已简化(第一次用C#做界面,比较菜,请轻喷)

 import struct

def main():
    transID = 0
    protocolID = 0
    length = 6
    unitID = 9
    funcCode = 1  # 读保持寄存器的值
    startAddr = 0  # start from 0x0000
    quantityReg = 0
    packet = struct.pack(">H", transID) + struct.pack(">H", protocolID) + struct.pack(">H", length) + \
                 struct.pack(">B", unitID) + struct.pack(">B", funcCode) + struct.pack(">H", startAddr) + \
                 struct.pack(">H", quantityReg)
    return packet

我的C#程序:


using Microsoft.Scripting.Hosting;
using IronPython.Hosting;
 private void button2_Click(object sender, EventArgs e)
        {

            ScriptRuntime scriptRuntime = Python.CreateRuntime();
            var engine = scriptRuntime.GetEngine("python");
            var paths = engine.GetSearchPaths();
            paths.Add(@"C:/Users/Administrator/AppData/Local/Programs/Python/Python36-32/Lib");
            engine.SetSearchPaths(paths);
            dynamic dynamic = scriptRuntime.UseFile("Python/Kylin_Fuzz_2.py");
            string dd = dynamic.main();
            MessageBox.Show(dd + "");
        }

出现的问题是:

“Host.exe”(CLR v4.0.30319: DefaultDomain): 已加载“C:\Windows\Microsoft.Net\assembly\GAC_32\mscorlib\v4.0_4.0.0.0__b77a5c561934e089\mscorlib.dll”。已跳过加载符号。模块进行了优化,并且调试器选项“仅我的代码”已启用。
“Host.exe”(CLR v4.0.30319: DefaultDomain): 已加载“F:\Learning_Others\C#界面\Host\Host\bin\Debug\Host.exe”。已加载符号。
“Host.exe”(CLR v4.0.30319: Host.exe): 已加载“C:\Windows\Microsoft.Net\assembly\GAC_MSIL\System.Windows.Forms\v4.0_4.0.0.0__b77a5c561934e089\System.Windows.Forms.dll”。已跳过加载符号。模块进行了优化,并且调试器选项“仅我的代码”已启用。
“Host.exe”(CLR v4.0.30319: Host.exe): 已加载“C:\Windows\Microsoft.Net\assembly\GAC_MSIL\System\v4.0_4.0.0.0__b77a5c561934e089\System.dll”。已跳过加载符号。模块进行了优化,并且调试器选项“仅我的代码”已启用。
“Host.exe”(CLR v4.0.30319: Host.exe): 已加载“C:\Windows\Microsoft.Net\assembly\GAC_MSIL\System.Drawing\v4.0_4.0.0.0__b03f5f7f11d50a3a\System.Drawing.dll”。已跳过加载符号。模块进行了优化,并且调试器选项“仅我的代码”已启用。
“Host.exe”(CLR v4.0.30319: Host.exe): 已加载“C:\Windows\Microsoft.Net\assembly\GAC_MSIL\System.Configuration\v4.0_4.0.0.0__b03f5f7f11d50a3a\System.Configuration.dll”。已跳过加载符号。模块进行了优化,并且调试器选项“仅我的代码”已启用。
“Host.exe”(CLR v4.0.30319: Host.exe): 已加载“C:\Windows\Microsoft.Net\assembly\GAC_MSIL\System.Core\v4.0_4.0.0.0__b77a5c561934e089\System.Core.dll”。已跳过加载符号。模块进行了优化,并且调试器选项“仅我的代码”已启用。
“Host.exe”(CLR v4.0.30319: Host.exe): 已加载“C:\Windows\Microsoft.Net\assembly\GAC_MSIL\System.Xml\v4.0_4.0.0.0__b77a5c561934e089\System.Xml.dll”。已跳过加载符号。模块进行了优化,并且调试器选项“仅我的代码”已启用。
“Host.exe”(CLR v4.0.30319: Host.exe): 已加载“F:\Learning_Others\C#界面\Host\Host\bin\Debug\IronPython.dll”。已跳过加载符号。模块进行了优化,并且调试器选项“仅我的代码”已启用。
“Host.exe”(CLR v4.0.30319: Host.exe): 已加载“F:\Learning_Others\C#界面\Host\Host\bin\Debug\Microsoft.Scripting.dll”。已跳过加载符号。模块进行了优化,并且调试器选项“仅我的代码”已启用。
“Host.exe”(CLR v4.0.30319: Host.exe): 已加载“C:\Windows\Microsoft.Net\assembly\GAC_MSIL\Microsoft.CSharp\v4.0_4.0.0.0__b03f5f7f11d50a3a\Microsoft.CSharp.dll”。已跳过加载符号。模块进行了优化,并且调试器选项“仅我的代码”已启用。
“Host.exe”(CLR v4.0.30319: Host.exe): 已加载“F:\Learning_Others\C#界面\Host\Host\bin\Debug\Microsoft.Dynamic.dll”。已跳过加载符号。模块进行了优化,并且调试器选项“仅我的代码”已启用。
“Host.exe”(CLR v4.0.30319: Host.exe): 已加载“C:\Windows\Microsoft.Net\assembly\GAC_MSIL\System.Numerics\v4.0_4.0.0.0__b77a5c561934e089\System.Numerics.dll”。已跳过加载符号。模块进行了优化,并且调试器选项“仅我的代码”已启用。
“Host.exe”(CLR v4.0.30319: Host.exe): 已加载“F:\Learning_Others\C#界面\Host\Host\bin\Debug\IronPython.Modules.dll”。已跳过加载符号。模块进行了优化,并且调试器选项“仅我的代码”已启用。
“Host.exe”(CLR v4.0.30319: Host.exe): 已加载“C:\Windows\Microsoft.Net\assembly\GAC_MSIL\mscorlib.resources\v4.0_4.0.0.0_zh-Hans_b77a5c561934e089\mscorlib.resources.dll”。模块已生成,不包含符号。
引发的异常:“Microsoft.Scripting.SyntaxErrorException”(位于 Microsoft.Dynamic.dll 中)
“Microsoft.Scripting.SyntaxErrorException”类型的未经处理的异常在 Microsoft.Dynamic.dll 中发生
unexpected token ','

不知道是什么原因,求各位大佬指点指点。

1个回答

根据提示信息是你的python的语法错。检查下代码的语法,以及缩进,还有你的struct 包是否导入。

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问