Rumah > pembangunan bahagian belakang > Golang > Bagaimanakah Saya Boleh Berjaya Mendapatkan Nilai Pulangan daripada Fungsi Python yang Dipanggil Dalam Program Go?

Bagaimanakah Saya Boleh Berjaya Mendapatkan Nilai Pulangan daripada Fungsi Python yang Dipanggil Dalam Program Go?

Barbara Streisand
Lepaskan: 2024-12-04 16:59:14
asal
229 orang telah melayarinya

How Can I Successfully Retrieve Return Values from Python Functions Called Within a Go Program?

Memanggil Fungsi Python daripada Go dan Mendapatkan Nilai Pulangan

Dalam senario di mana anda perlu memanfaatkan utiliti Python dalam program Go anda, panduan ini akan membantu anda menggunakan fungsi Python dan mendapatkan semula nilai pulangannya.

Kod asal, seperti yang disediakan dalam soalan:

package main

import "os/exec"
import "fmt"

func main() {
     fmt.Println("here we go...")
     program := "python"
     arg0 := "-c"
     arg1 := fmt.Sprintf("'import pythonfile; print pythonfile.cat_strings(\"%s\", \"%s\")'", "foo", "bar")
     cmd := exec.Command(program, arg0, arg1)
     fmt.Println("command args:", cmd.Args)
     out, err := cmd.CombinedOutput()
     if err != nil {
         fmt.Println("Concatenation failed with error:", err.Error())
     return
     }
     fmt.Println("concatentation length: ", len(out))
     fmt.Println("concatenation: ", string(out))
     fmt.Println("...done")
}
Salin selepas log masuk

Malangnya, kod ini menghasilkan nilai pulangan kosong. Penyelesaiannya terletak pada mengalih keluar tanda kutip yang dilampirkan daripada perintah Python:

package main

import "fmt"
import "os/exec"

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

Pengubahsuaian ini mendedahkan perincian menarik tentang fungsi EscapeArg Windows, yang menulis semula hujah baris arahan dengan menggandakan garis miring ke belakang sebelum petikan berganda dan melepaskan petikan berganda itu sendiri. . Oleh itu, kod asal pada dasarnya melarikan diri daripada arahan Python dan bukannya melaksanakannya dengan betul. Dengan menghapuskan tanda kutip yang dilampirkan, arahan yang betul dihantar kepada Python dan nilai pulangan fungsi berjaya diambil.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Berjaya Mendapatkan Nilai Pulangan daripada Fungsi Python yang Dipanggil Dalam Program Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan