Este tipo de preguntas se han hecho anteriormente en diversos grados, pero siento que no se ha respondido de manera concisa y, por lo tanto, vuelvo a preguntar.
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 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 la code.py
ubicación como cmd
y la filename
ubicación ya args
que no funciona. Me dijeron que debía pasar python.exe
como el cmd
, y luego code.py filename
como el args
.
He estado buscando durante 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 #.
Alguna aclaración:
Necesito ejecutarlo desde C #, necesito capturar la salida y no puedo usar IronPython ni nada más. Cualquier truco que tengas estará bien.
PD: El código de Python real que estoy ejecutando es mucho más complejo que esto, y devuelve el resultado que necesito en C #, y el código de C # llamará constantemente al código de Python.
Finge que este es mi código:
private void get_vals()
{
for (int i = 0; i < 100; i++)
{
run_cmd("code.py", i);
}
}