2010-06-09 18 views
1

Je construis un site ASP.NET MVC (C#) où je veux implémenter STV (Single Transferable Vote) voting. J'ai déjà utilisé OpenSTV pour des scénarios de vote, avec beaucoup de succès, mais je ne l'ai jamais utilisé par programmation.Appel de l'application/du script Python à partir du C#

Le OpenSTV Google Code project offers a Python script qui permet l'utilisation de OpenSTV d'autres applications:

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() 

est-il un moyen pour moi de faire un tel appel Python de mon site C# ASP.NET MVC?

Si oui, comment?

Merci d'avance!

Répondre

4

Here est un bon exemple sur comment appeler IronPython à partir de C#, y compris en passant des arguments et en retournant des résultats; bien sûr, vous devrez faire ce code dans une fonction, avec ballotFname et reportFname comme arguments.

3

La meilleure façon est probablement d'utiliser IronPython. Voir this answer pour un point de départ.

+0

Grand; Cependant, comment puis-je définir une méthode dans le script Python pour appeler via IronPython et comment puis-je passer dans ballotFname (nom du fichier de vote) et reportFname (nom du fichier de rapport)? –