2012-09-12 35 views
0

我需要调用从C#中的python脚本得到C#的数据为蟒蛇,我会做这样的:sys.argv中VS argparse通过命令行参数

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之间做出决定,这似乎很容易实现,或者与​​一起使用。 如果我将始终只传递一个参数(日期),那么使用​​有什么好处?

有关问题(略切的问题)附加信息:

我传递的日期是SQL查询的参数。我可以在C#中运行这个查询(我更喜欢),但是我需要通过命令行参数将结果传递给python,这在我看来似乎是一个可怕的想法,但也许这是argparse可以处理的东西?该表有两个日期列和4个浮动列。这样的表可以通过这种方式吗? (A)我只需要将信息从C#传递给Python,所以两者之间的通信非常有限,(B)其结果是是由mplot3d生成的三维表面图,这似乎是一个巨大的麻烦,使IronPython工作(实际上一般困惑我),所以如果我只是通过单一日期,这似乎并不合理。但是,如果我可以轻松地通过整个表,无论是通过命令行参数还是其他一些不太复杂的方法,我都会非常感兴趣的听到如何。

回答

1

既然你是一个很好的清洁无知的幸福石板,学习argparse。这很容易,并且取代了现在被认为是旧的,陈旧的和(可能)被弃用的sys.arg;尽管现在你会发现它更加普遍,因为Guido是一个婴儿时就已经存在了。

+0

我想我实际上只是将数据表写入一个CSV文件,然后python可以读取它,而不是试图将它作为命令行参数传递,这看起来像是一个可怕的想法,所以只是要通过日期。我会像你所建议的一样,为了万一我必须在将来再次使用它而提出argparse,但在这种特殊情况下它确实看起来过于矫枉过正。 – Dan