C#에서 Python 쓰기
출처 : 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 |