Questo tipo di domanda è stata posta in precedenza in varia misura, ma ritengo che non abbia ricevuto risposta in modo conciso e quindi lo chiedo di nuovo.
Voglio eseguire uno script in Python. Diciamo che è questo:
if __name__ == '__main__':
with open(sys.argv[1], 'r') as f:
s = f.read()
print s
Che ottiene un percorso di file, lo legge, quindi stampa il suo contenuto. Non così complicato
Okay, quindi come posso eseguirlo in C #?
Questo è quello che ho ora:
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);
}
}
}
Quando passo la code.py
posizione come cmd
e la filename
posizione in args
quanto non funziona. Mi è stato detto che avrei dovuto passare python.exe
come cmd
, e poi code.py filename
come args
.
Sto cercando da un po 'di tempo e posso trovare solo persone che suggeriscono di usare IronPython o simili. Ma deve esserci un modo per chiamare uno script Python da C #.
Alcuni chiarimenti:
Devo eseguirlo da C #, devo catturare l'output e non posso usare IronPython o altro. Qualunque hack tu abbia, andrà bene.
PS: Il vero codice Python che sto eseguendo è molto più complesso di questo, e restituisce l'output di cui ho bisogno in C #, e il codice C # chiamerà costantemente il codice Python.
Fai finta che questo sia il mio codice:
private void get_vals()
{
for (int i = 0; i < 100; i++)
{
run_cmd("code.py", i);
}
}