C#에서 Python 쓰기

Python : 2008. 2. 19. 14:28
반응형

출처 : http://blog.naver.com/drmstorm/50015791071
CSharp에서..
Python을 사용하는 것이다..
자아.. 별건 아니고..
일단 소스로 보자...

static void Main(string[] args)
{
   PythonEngine python = new PythonEngine();

   python.Execute("res = 10");
   object result = python.Globals["res"];
   Console.WriteLine("result:{0}", result.ToString());
           
   int number = 50;

   python.Globals["number"] = number;
   try
   {
      python.ExecuteFile("simple.py");
   }
   catch (Exception ex)
   {
      Console.WriteLine(ex.Message);
   }
   result = python.Globals["result"];
   Console.WriteLine("result:{0}", result.ToString());

}


def Divide( number ):
   return number / 2
result = Divide( number )
result = result ** 2

자아.. 위와 같은 소스..
컴파일 하기 위해서는.. 그냥..
IronPython인가 하는 dll을 참조에 포함시켜 주기만 하면 된다..
어쨋든 컴파일을 하면..
우선.. Execute를 통하여.. 간단한 값의 연산을 할 수 있고..
Globals를 통하여 값을 읽어 올 수 있다.
(물론 dictionary.. type이다..)
그 다음.. 화일에서 실행을 하게 되는 것을 볼 수 있다..
자.. 간단한 것이지만 많은 활용을 할 수 있는데..
일단..
위와 같이 하여 컴파일을 마친다음..

스크립트 화일을 변경하면, 변경된 스크립트 화일이 실행이된다..

이것.. 굉장하지 않은가..?
지금까지 내가 생각했던 절반의 삽질을 하지 않아도 되는 것이다.


..
자아.. 조금더 수정을 해 보자...
일단은.. 약간의 변경된점..


IronPython.Hosting.PythonEngine p = new IronPython.Hosting.PythonEngine();
            List<int> a = new List<int>();
           
            try
            {
                p.ExecuteFile("message.py");
                object res = p.Globals["result"];
            }
            catch
            {
            }

요렇게 변경 되었으며..


message.py

-----------------------------------------------

from System.Collections.Generic import Dictionary
from System import *

result = Dictionary[String, String]()


result["TTT"] = "TTT1"
result["TT1"] = "TT11"
result["TT2"] = "TT21"
result["TT3"] = "TT31"


-----------------------------------------------

위와 같은 코드를 통하여 파이선으로 만든 Dictionaty 오브젝트를 가져올수 있다.
그대로 가져올수 있다.
즉.

저것을 사용하면 그때그때 변경이 가능한 스크립트에 의한 값을 사용할 수 있다는 의미..
나이스 하지 않아?

반응형

'Python' 카테고리의 다른 글

IronPython 에서 .Net C# 끌어 쓰기  (0) 2008.02.19
[Python] Python 설치하기  (0) 2008.01.17
python serial 통신  (0) 2008.01.17
Posted by Real_G