C# ile python script çalıştırma

Python scriptini C# ile tetiklemek için birkaç farklı yöntem bulunmaktadır.

  1. Process Sınıfı Kullanarak Çalıştırmak: C# uygulamanızda System.Diagnostics ad alanını kullanarak Python scriptini başlatmak için Process sınıfını kullanabilirsiniz. Örneğin:
using System;
using System.Diagnostics;

class Program
{
    static void Main()
    {
        ProcessStartInfo start = new ProcessStartInfo();
        start.FileName = "python";
        start.Arguments = "path_to_your_python_script.py";
        start.UseShellExecute = false;
        start.RedirectStandardOutput = true;
        using (Process process = Process.Start(start))
        {
            using (System.IO.StreamReader reader = process.StandardOutput)
            {
                string result = reader.ReadToEnd();
                Console.Write(result);
            }
        }
    }
}
  1. IronPython Kütüphanesi: IronPython, C# ile Python arasında entegrasyon sağlayan bir kütüphanedir. Bu kütüphane sayesinde C# kodlarınız içerisinde doğrudan Python scriptlerini çalıştırabilirsiniz. Bunun için öncelikle IronPython kütüphanesini projenize eklemelisiniz.
  2. PythonNet Kütüphanesi: PythonNet, .NET uygulamalarının Python kodlarını çalıştırabilmesi için bir köprü sağlar. Bu kütüphane sayesinde C# kodlarınız içerisinde Python scriptlerini çalıştırabilirsiniz.

İhtiyacınıza ve projenizin gereksinimlerine bağlı olarak, uygun olan yöntemi seçebilirsiniz. Bu yöntemlerden herhangi biriyle Python scriptlerini C# uygulamanız içinde başlatabilir ve yönetebilirsiniz.

Python scriptine parametre göndermek için, ProcessStartInfo nesnesi kullanılarak Arguments özelliğini kullanabilirsiniz. Örneğin, python_script.py adlı bir Python betiğine iki parametre göndermek istediğinizi varsayalım. Aşağıda bunu nasıl yapabileceğinize dair bir örnek bulabilirsiniz:

using System;
using System.Diagnostics;

class Program
{
    static void Main()
    {
        string param1 = "value1";
        string param2 = "value2";

        ProcessStartInfo start = new ProcessStartInfo();
        start.FileName = "python";
        start.Arguments = string.Format("path_to_your_python_script.py {0} {1}", param1, param2);
        start.UseShellExecute = false;
        start.RedirectStandardOutput = true;
        using (Process process = Process.Start(start))
        {
            using (System.IO.StreamReader reader = process.StandardOutput)
            {
                string result = reader.ReadToEnd();
                Console.Write(result);
            }
        }
    }
}

Bu örnekte, param1 ve param2 isimli iki parametre tanımlanmıştır. Ardından, ProcessStartInfo nesnesinin Arguments özelliği kullanılarak Python scriptine bu parametreler iletilir. string.Format fonksiyonu ile Python scriptine gönderilecek argümanlar oluşturulur. Python scripti bu argümanları sys.argv kullanarak alabilir.