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.pylokasi sebagai cmddan filenamelokasi karena argstidak berfungsi. Saya diberitahu bahwa saya harus lulus python.exesebagai cmd, dan kemudian code.py filenamesebagai 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);
}
}