>백엔드 개발 >Golang >Go 프로그램에서 호출한 Python 함수에서 반환 값을 성공적으로 검색하려면 어떻게 해야 합니까?

Go 프로그램에서 호출한 Python 함수에서 반환 값을 성공적으로 검색하려면 어떻게 해야 합니까?

Linda Hamilton
Linda Hamilton원래의
2024-11-28 15:31:111015검색

How Can I Successfully Retrieve Return Values from a Python Function Called by a Go Program?

Go에서 Python 함수 호출 및 반환 값 검색

프로젝트에서 여러 언어로 작업할 때 일반적인 작업 중 하나는 한 언어의 함수를 다른 언어 내에서 호출하는 기능입니다. 이 경우 Go 프로그램에서 Python 함수를 호출하고 반환 값을 검색하는 방법을 탐색하고 있습니다.

원래 시도 및 문제

초기 시도에서 다음 Go 코드는 다음과 같습니다. 사용:

package main

import (
    "fmt"
    "os/exec"
)

func main() {
    cmd := exec.Command("python", "-c", fmt.Sprintf("'import pythonfile; print pythonfile.cat_strings(\"%s\", \"%s\")'", "foo", "bar"))
    out, err := cmd.CombinedOutput()
    if err != nil {
        fmt.Println(err)
        return
    }
    fmt.Println(string(out))
}

그러나 이 접근 방식에서는 Python 함수의 반환 값이 Go 프로그램에서 캡처되지 않는 문제가 발생했습니다. 출력에는 빈 문자열 " "이 표시되었습니다.

문제 분석

Python 명령의 형식 지정 방식으로 인해 문제가 발생했습니다. 명령 자체를 둘러싼 따옴표는 Python 해석기가 명령을 인수 목록이 아닌 단일 문자열로 처리하도록 유도했습니다.

해결책

문제를 해결하기 위해 명령을 둘러싼 따옴표는 다음과 같습니다. 제거됨. 다음 Go 코드는 솔루션을 보여줍니다.

package main

import (
    "fmt"
    "os/exec"
)

func main() {
    cmd := exec.Command("python", "-c", "import pythonfile; print pythonfile.cat_strings('foo', 'bar')")
    out, err := cmd.CombinedOutput()
    if err != nil {
        fmt.Println(err)
        return
    }
    fmt.Println(string(out))
}

따옴표를 제거하면 이제 명령이 의도한 대로 실행되고 Python 함수의 반환 값을 Go 프로그램에서 적절하게 캡처할 수 있습니다.

위 내용은 Go 프로그램에서 호출한 Python 함수에서 반환 값을 성공적으로 검색하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.