将多个参数从c#传递给python

时间:2018-05-18 14:35:16

标签: c# python mysql wpf

我想将多个字符串变量从我的程序C#传递给Python脚本。

这是我在C#中的函数,我调用了一个文件InsertSemantic.py,我想传递9个参数(nome,formVerb,contesto ecc ...)

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}", 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();
        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();
}

我在InsertSemantic.py中写了这一行:

import sys

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]

但是通过简单的印刷我看到我只收到一个参数(nome)而另一个参数没有通过...... 有人可以帮帮我吗? (对不起我的英文)

1 个答案:

答案 0 :(得分:1)

    public static OffsetDateTime convertString(String timestamp) {
        java.time.format.DateTimeFormatter parser = java.time.format.DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss");
        java.time.LocalDateTime dt = java.time.LocalDateTime.parse(timestamp, parser);
        ZonedDateTime zdt = ZonedDateTime.of(dt, java.time.ZoneId.of("UTC"));
        return OffsetDateTime.from(zdt);
    }

仅使用string arg = string.Format(@"C:\Users\marco\eclipse-workspace\my_project\src\InsertSemantic.py {0}", nome, formVerb, contesto, sinonimi, significato, class_gramm, class_prag, class_sem, retorico); 获取第一个格式值。您还需要包含其余值,例如。 {0}等等。

{0},{1},{2}

上面应该包含要添加到格式化字符串的其余参数。

将来,您可以通过在调试器中单步执行代码来解决此问题,您会注意到在分配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); 时,只有第一个参数被传递,表明问题出在转让时间。