Я хочу передать несколько строковых переменных из моей программы 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]
но с простой печатью я увидел, что получаю только ОДИН аргумент (ном), а другой аргумент не проходит ... кто-нибудь может мне помочь?





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);
приведенное выше должно включать остальные параметры, которые нужно добавить к отформатированной строке.
В будущем вы можете решить эту проблему, пройдя свой код в отладчике, и вы заметите, что при назначении arg передается только первый из ваших параметров, что указывает на то, что проблема возникла во время назначения.
Кстати, сценарий Python может быть намного лучше
nome, formVer, contesto, sinonimi, significato, gramm, prag, sem, retorico = sys.argv[1:10]