2012-09-12 66 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