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