Python Script' lerinin C# ile çalıştırılması (Execute Python Script in C#)

Çogu programcının istiyebileceği bir konudur esasında. Bilgisayar dillerinin birbirleri ile uyum içinde çalışması. Evet konumuz Python ile .Net platformunun güzide :) dillerinden olan C# ın beraber çalışması. Bu nasıl mı olacak? C# ile yazdığımız bir programımızdan *.py script ini çalıştıracağız ve Python dosyamızın çıktılarını yine C# içinde göreceğiz. Bu iş için elinizde Python veya C# editörünüz yoksa ilgili linklerden indirebilirsiniz.

Download Python 3.1.2
C# Download

## Unutmadan söyliyeyim. Bu yapacağımız işlemler .Net içerisinde bulunan IronPython ile denenmemiştir. ##

# Guido van Rossum tarafından yazılan Python için anlatılmaktadır. #

Yapacağımız işlemleri sıra ile anlatıyorum. Sıra numarasına sadık kalırsanız hatasız bir şekilde programımızı tamamlayabiliriz.

Python Editörümüzü açıp içerisinde
< print("Hello C# and Python:)") > satırından ibaret bir py dosyası oluşturuyoruz. Eger bu noktada sıkıntı yaşarsanız "Visual Tkinter" programını kurabilirsiniz. Donload Visual Tkinter . Bu dosyamızın isminide olarak verelim.
Python dosyamızı içrisine kaydedersek şu an için daha iyi olur. Şimdi de Visual Studio yu açıp menümüzden seçeneğini seçerek C# projemizi oluşturalım. Formumuza 1 Button ve 1 RichTextBox koyalım.
Button muza clikleyerek ilgili metodun açılmasını sağlayalım. daha sonra içerisine şu kodları yazıyoruz.
using System.Diagnostics; // Process sınıfımızın tanımlandığı kütüphane
//Button fonksiyonun içerisine;

Process p = new Process(); // Yeni nesne yarat...
p.StartInfo.UseShellExecute = false; // Shell kullanma...
p.StartInfo.RedirectStandardOutput = true; // Çıkışı yönlendir....
p.StartInfo.FileName = "c:\\python26\\python.exe"; // Python klasörümüz ve derleyicimizin adı...
p.StartInfo.Arguments = "c:\\python26\\Hello_C_Python.py"; // verilecek yani çalıştırılacak python scriptimizin yolu...

p.Start(); // işlemeye başla...

string output = p.StandardOutput.ReadToEnd(); // çıkışı sakla
p.WaitForExit(); // çıkış için zaman tanıyalım :)
return output; // ve mutlu son işte sonuç :)

Mutlu son demişmiydik. Evet söylemiştik. Bu program için 2 gün tırmaladım ama deydi doğrusu. İşin sırrınıda çözdüm esasında. Sır mı? Sır satırınd a gizli. :) Bekleyen derviş muradına gerçekten ermiş mi?

Hoşça kalın...

Kaynaklar :

http://codemagnet.blogspot.com
http://www.daniweb.com/
http://msdn.microsoft.com/
http://www.python.org/
http://uzaktanegitimmerkezi.org/