我正在建立一个我想实现STV (Single Transferable Vote) voting的ASP.NET MVC(C#)网站。之前,我曾使用OpenSTV进行投票,但取得了巨大的成功,但是我从未以编程方式使用过它。
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调用?
如果是这样,怎么办?
提前致谢!
最佳答案
Here是一个很好的示例,说明如何从C#调用IronPython,包括传递参数和返回结果。当然,您必须使用ballotFname
和reportFname
作为参数将代码变成一个函数。