c# - 将多个参数从 c# 传递给 python
问题描述
我想将多个字符串变量从我的程序 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)而另一个参数没有通过......有人可以帮助我吗?
解决方案
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
分配给时,只有第一个参数被传递,表明问题出在分配时。
推荐阅读
- entity-framework - EF -脚本选项
- laravel - 如何为每个小部件插入不同的图标
- logic - 表达和定义逻辑
- python - 将需求从 requirements.txt 添加到 conda meta.yaml
- c - 在我自己实现的 RSA Lib 中,如何将 RSA 密钥的 2 部分转换为 b64?
- java - 此嵌套 for 循环的时间复杂度
- ruby - Ruby 的 define_method 对实例变量有特殊的访问权限吗?
- mongodb - Mongodb 性能提升喜欢字段或数组的返回大小
- regex - 在 Ansible 中提取 {{ inventory_hostname }} 的一部分以在剧本中使用
- c++ - 此函数或变量可能不安全