我需要从C#调用一个python脚本,我会这样做:
System.Diagnostics.Process process = new System.Diagnostics.Process();
System.Diagnostics.ProcessStartInfo startInfo = new System.Diagnostics.ProcessStartInfo();
startInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
startInfo.FileName = "cmd.exe";
startInfo.Arguments = "/C python \"C:\\working\\projects\\python tests\\Sample Data.py\"";
process.StartInfo = startInfo;
process.Start();
但我现在需要添加命令行参数。我试图在使用sys.argv
之间做出决定,这似乎很容易实现,或者与argparse
一起使用。 如果我将始终传递一个且只传递一个参数(日期),使用argparse
是否有任何优势?
有关问题的其他信息(与问题略有不同):
我传递的日期是SQL查询的参数。我可以用C#(我更喜欢)运行这个查询,但后来我需要通过命令行参数将结果传递给python,这对我来说似乎是一个可怕的想法,但也许这是argparse可以处理的东西?该表有两个日期列和4个浮点列。这样的表可以通过这种方式传递吗?
我通过cmd.exe调用python而不使用IronPython的原因是(A)我只需要将信息从C#传递一次到Python,因此两者之间的通信非常有限,(B)结果是mplot3d生成的3D表面图在IronPython中工作似乎很麻烦(实际上通常会让我感到困惑),所以如果我只是通过单一日期那么这似乎并不合理。但是,如果我可以通过命令行参数或其他一些不太复杂的方法轻松地传递整个表,我会非常有兴趣听听如何。
答案 0 :(得分:1)
因为你是一个很好的无知幸福的清单,学习argparse。这很简单,取而代之的是sys.arg,它现在被认为是旧的,过时的,并且(可能)已经弃用了;虽然你会发现它现在更常见,因为它已经存在,因为Guido还是个孩子。