Chamando o aplicativo/script python de C#
-
25-09-2019 - |
Pergunta
Estou construindo um site ASP.NET MVC (C#) onde quero implementar STV (Voto transferível único) votar. Eu já usei o OpenSTV para cenários de votação antes, com grande sucesso, mas nunca o usei programaticamente.
o O OpenStv Google Code Project oferece um script python Isso permite o uso do OpenSTV de outras aplicações:
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()
Existe uma maneira de fazer uma chamada tão python no meu site C# Asp.net MVC?
Se sim, como?
Desde já, obrigado!
Solução
Aqui é um bom exemplo de como chamar o IronPython de C#, incluindo argumentos passantes e resultados de retorno; Claro que você terá que transformar esse código em uma função, com ballotFname
e reportFname
como seus argumentos.
Outras dicas
A melhor maneira é provavelmente usar o Ironpython. Ver esta resposta para um ponto de partida.