You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C#向Python脚本传递多个字符串参数失败求助

问题原因与解决方案

嘿,我一眼就发现问题所在啦!你在C#里用string.Format的时候只写了一个占位符{0},这就导致只有第一个参数nome被拼接到命令行里,剩下的8个参数根本没被加进去,Python脚本自然只能收到第一个参数咯。

修正步骤

1. 修复C#中的参数拼接

你需要给每个要传递的参数都添加对应的占位符,并且为了避免参数包含空格或特殊字符导致解析错误,最好给每个占位符加上双引号。修正后的insertDatabase函数代码如下:

private void insertDatabase(String nome, String formVerb, String contesto, String sinonimi, String significato, String class_gramm, String class_prag, String class_sem, String retorico)
{
    // 给每个参数添加占位符,并用双引号包裹处理特殊字符
    string arg = string.Format(@"C:\Users\marco\eclipse-workspace\my_project\src\InsertSemantic.py ""{0}"" ""{1}"" ""{2}"" ""{3}"" ""{4}"" ""{5}"" ""{6}"" ""{7}"" ""{8}""", 
        nome, formVerb, contesto, sinonimi, significato, class_gramm, class_prag, class_sem, retorico);
    
    try
    {
        Process p1 = new Process();
        p1.StartInfo = new ProcessStartInfo(@"C:\Python27\python.exe", arg);
        p1.StartInfo.UseShellExecute = false;
        p1.StartInfo.RedirectStandardOutput = true;
        p1.Start();
        // 读取Python输出,方便验证参数是否传递成功
        string output = p1.StandardOutput.ReadToEnd();
        Console.WriteLine("Python输出:" + output);
        p1.WaitForExit();
    }
    catch (Exception ex)
    {
        Console.WriteLine("There is a problem in your Python code: " + ex.Message);
    }
    Console.WriteLine("Press enter to exit...");
    Console.ReadLine();
}

2. 优化Python脚本的测试代码

为了确认所有参数都能正确接收,可以在Python脚本里加个测试打印:

import sys

print(f"收到的参数数量:{len(sys.argv)}")
for i in range(len(sys.argv)):
    print(f"sys.argv[{i}] = {sys.argv[i]}")

# 原来的赋值代码
nome= sys.argv[1]
formVer=sys.argv[2]
contesto= sys.argv[3]
sinonimi= sys.argv[4]
significato= sys.argv[5]
gramm= sys.argv[6]
prag= sys.argv[7]
sem= sys.argv[8]
retorico= sys.argv[9]

额外说明

  • 为什么要加双引号?如果你的参数里包含空格(比如contesto是一段长句子),命令行会把空格当成参数分隔符,导致参数被拆成多个。用双引号包裹后,整个字符串会被当作一个完整的参数传递。
  • 你也可以换一种更清晰的参数传递方式:把Python脚本路径作为ProcessStartInfo的Arguments的第一个元素,后续参数依次跟上,同时设置WorkingDirectory为脚本所在目录,但上面的修正方式已经能完美解决你的问题啦。

内容的提问来源于stack exchange,提问作者Marco

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 06:31:03