복붙노트

[PYTHON] C #의 Python 스크립트에서 특정 메서드를 호출하려면 어떻게해야합니까?

PYTHON

C #의 Python 스크립트에서 특정 메서드를 호출하려면 어떻게해야합니까?

C # 프로젝트를 통해 Python 스크립트에서 특정 메서드를 호출 할 수 있는지 궁금합니다.

나는 코드가 없다 ...하지만 내 생각은 :

파이썬 코드 :

def SetHostInfos(Host,IP,Password):
   Work to do...

def CalcAdd(Numb1,Numb2):
   Work to do...

C # 코드 :

SetHostInfos("test","0.0.0.0","PWD")
result = CalcAdd(12,13)

이 Python 스크립트에서 C #을 통해 Method 중 하나를 어떻게 호출 할 수 있습니까?

해결법

  1. ==============================

    1.IronPython을 호스팅하고, 스크립트를 실행하고, 생성 된 범위를 통해 스크립트 내에 정의 된 함수에 액세스 할 수 있습니다.

    IronPython을 호스팅하고, 스크립트를 실행하고, 생성 된 범위를 통해 스크립트 내에 정의 된 함수에 액세스 할 수 있습니다.

    다음 샘플은 기본 개념과 C #에서 함수를 사용하는 두 가지 방법을 보여줍니다.

    var pySrc =
    @"def CalcAdd(Numb1, Numb2):
        return Numb1 + Numb2";
    
    // host python and execute script
    var engine = IronPython.Hosting.Python.CreateEngine();
    var scope = engine.CreateScope();
    engine.Execute(pySrc, scope);
    
    // get function and dynamically invoke
    var calcAdd = scope.GetVariable("CalcAdd");
    var result = calcAdd(34, 8); // returns 42 (Int32)
    
    // get function with a strongly typed signature
    var calcAddTyped = scope.GetVariable<Func<decimal, decimal, decimal>>("CalcAdd");
    var resultTyped = calcAddTyped(5, 7); // returns 12m
    
  2. ==============================

    2.비슷한 방법을 찾았습니다. 메서드 호출은 훨씬 쉽습니다.

    비슷한 방법을 찾았습니다. 메서드 호출은 훨씬 쉽습니다.

    C # 코드는 다음과 같습니다.

    IDictionary<string, object> options = new Dictionary<string, object>();
    options["Arguments"] = new [] {"C:\Program Files (x86)\IronPython 2.7\Lib", "bar"};
    
    var ipy = Python.CreateRuntime(options);
    dynamic Python_File = ipy.UseFile("test.py");
    
    Python_File.MethodCall("test");
    

    그래서 기본적으로 파이썬 파일에 정의하고자하는 라이브러리 경로가있는 사전을 제출합니다.

    그래서 PYthon 스크립트는 다음과 같습니다 :

    #!/usr/bin/python
    
    import sys
    path = sys.argv[0]  #1 argument given is a string for the path
    sys.path.append(path)
    import httplib
    import urllib
    import string
    
    def MethodCall(OutputString):
        print Outputstring
    

    그래서 메서드 호출은 이제 C #에서 훨씬 쉬워졌습니다. 그리고 인수 전달은 그대로 유지됩니다. 또한이 코드를 사용하면 사용자 정의 라이브러리 폴더를 가져올 수 있습니다. 네트워크에서 작업하는 경우 매우 유용한 Python 파일 다른 PC가 많이있다.

  3. ==============================

    3.파이썬 프로그램이 명령 행에서 인수를 취한 다음 C # 코드에서 명령 행 응용 프로그램으로 호출 할 수 있습니다.

    파이썬 프로그램이 명령 행에서 인수를 취한 다음 C # 코드에서 명령 행 응용 프로그램으로 호출 할 수 있습니다.

    그렇게하면 갈 길이 멀다.

    C #에서 파이썬 스크립트를 어떻게 실행합니까? http://blogs.msdn.com/b/charlie/archive/2009/10/25/hosting-ironpython-in-a-c-4-0-program.aspx

  4. from https://stackoverflow.com/questions/13231913/how-do-i-call-a-specific-method-from-a-python-script-in-c by cc-by-sa and MIT license