Pertanyaan semacam ini telah diajukan sebelumnya dalam berbagai tingkat, tetapi saya merasa itu belum dijawab secara ringkas sehingga saya bertanya lagi.
Saya ingin menjalankan skrip dengan Python. Katakanlah ini:
if __name__ == '__main__':
with open(sys.argv[1], 'r') as f:
s = f.read()
print s
Yang mendapat lokasi file, membacanya, lalu mencetak isinya. Tidak terlalu rumit.
Oke, jadi bagaimana cara menjalankan ini di C #?
Inilah yang saya miliki sekarang:
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);
}
}
}
Ketika saya melewati code.py
lokasi sebagai cmd
dan filename
lokasi karena args
tidak berfungsi. Saya diberitahu bahwa saya harus lulus python.exe
sebagai cmd
, dan kemudian code.py filename
sebagai args
.
Saya telah mencari beberapa saat sekarang dan hanya dapat menemukan orang yang menyarankan untuk menggunakan IronPython atau semacamnya. Tetapi harus ada cara untuk memanggil skrip Python dari C #.
Beberapa klarifikasi:
Saya perlu menjalankannya dari C #, saya perlu menangkap output, dan saya tidak bisa menggunakan IronPython atau apa pun. Apapun hack yang Anda miliki akan baik-baik saja.
PS: Kode Python aktual yang saya jalankan jauh lebih kompleks dari ini, dan mengembalikan keluaran yang saya butuhkan di C #, dan kode C # akan terus-menerus memanggil kode Python.
Berpura-puralah ini kode saya:
private void get_vals()
{
for (int i = 0; i < 100; i++)
{
run_cmd("code.py", i);
}
}