¿Cómo ejecuto un script de Python desde C #?
Este tipo de pregunta ha sido formulada anteriormente en diversos grados, pero siento que no ha sido respondida de manera concisa y por eso la pregunto nuevamente.
Quiero ejecutar un script en Python. Digamos que es esto:
if __name__ == '__main__':
with open(sys.argv[1], 'r') as f:
s = f.read()
print s
Que obtiene una ubicación de archivo, la lee y luego imprime su contenido. No es tan complicado.
Bien, entonces, ¿cómo ejecuto esto en C #?
Esto es lo que tengo ahora:
private void run_cmd(string cmd, string args)
{
ProcessStartInfo start = new ProcessStartInfo();
start.FileName = cmd;
start.Arguments = args;
start.UseShellExecute = false;
start.RedirectStandardOutput = true;
using (Process process = Process.Start(start))
{
using (StreamReader reader = process.StandardOutput)
{
string result = reader.ReadToEnd();
Console.Write(result);
}
}
}
Cuando paso elcode.py
ubicación comocmd
y elfilename
ubicación comoargs
no funciona Me dijeron que debía pasarpython.exe
como elcmd
, y entoncescode.py filename
como elargs
.
He estado buscando por un tiempo y solo puedo encontrar personas que sugieran usar IronPython o algo así. Pero debe haber una manera de llamar a un script de Python desde C #.
Algunas aclaraciones:
Necesito ejecutarlo desde C #, necesito capturar la salida, y no puedo usar IronPython o cualquier otra cosa. Cualquier truco que tengas estará bien.
P.S .: El código Python real que estoy ejecutando es mucho más complejo que esto, y devuelve el resultado que necesito en C #, y el código C # llamará constantemente a Python.
Finge que este es mi código:
private void get_vals()
{
for (int i = 0; i < 100; i++)
{
run_cmd("code.py", i);
}
}