2010-06-09 101 views
1

我正在構建一個ASP.NET MVC(C#)網站,我想實現​​。我之前使用過OpenSTV進行投票,取得了巨大的成功,但我從未以編程方式使用它。從C調用Python應用/腳本#

OpenSTV Google Code project offers a Python script,允許從其他應用程序OpenSTV的用法:

import sys 
sys.path.append("path to openstv package") 

from openstv.ballots import Ballots 
from openstv.ReportPlugins.TextReport import TextReport 
from openstv.plugins import getMethodPlugins 

(ballotFname, method, reportFname) = sys.argv[1:] 

methods = getMethodPlugins("byName") 
f = open(reportFname, "w") 

try: 
    b = Ballots() 
    b.loadUnknown(ballotFname) 
except Exception, msg: 
    print >> f, ("Unable to read ballots from %s" % ballotFname) 
    print >> f, msg 
    sys.exit(-1) 

try: 
    e = methods[method](b) 
    e.runElection() 
except Exception, msg: 
    print >> f, ("Unable to count votes using %s" % method) 
    print >> f, msg 
    sys.exit(-1) 

try: 
    r = TextReport(e, outputFile=f) 
    r.generateReport(); 
except Exception, msg: 
    print >> f, "Unable to write report" 
    print >> f, msg 
    sys.exit(-1) 

f.close() 

有我的方式,使從我的C#ASP.NET MVC網站這樣一個Python電話嗎?

如果是這樣,怎麼樣?

在此先感謝!

回答

4

Here是如何從C#調用IronPython的一個很好的例子,包括傳遞參數和返回結果;當然你必須把這個代碼變成一個函數,用ballotFnamereportFname作爲它的參數。

3

最好的方法可能是使用IronPython。請參閱this answer作爲起點。

+0

太棒了;然而,如何在Python腳本中定義一個方法來通過IronPython調用,以及如何傳入ballotFname(選票文件名)和reportFname(報告文件名)? – 2010-06-09 03:33:53