亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

調用 python 腳本并捕獲二進制輸出

調用 python 腳本并捕獲二進制輸出

Go
慕沐林林 2023-07-26 17:46:07
我想在 go 中操作圖像,并且我已經有一個 python 腳本來修改圖像。我只需要從 python 腳本發送圖像即可。為此,我按以下方式進行:Python腳本:image = image_in_bytesprint (image)去腳本:cmd := exec.Command("python", "image.py")stdout, err := cmd.StdoutPipe()if err != nil {    panic(err)}err = cmd.Start()if err != nil {    panic(err)}body, _ := ioutil.ReadAll(stdout) //I need the image in []bytecmd.Wait()但是使用上面的代碼 golang 會永遠等待,沒有任何輸出......任何想法?
查看完整描述

1 回答

?
HUX布斯

TA貢獻1876條經驗 獲得超6個贊

對我來說工作完美,如下所述:


>>> with open("osx.png","rb") as imageFile:

...     img = repr(imageFile.read())

>>> imageFile.close()

>>> with open("sample.py","w") as pyfile:

...     pyfile.write(img)

>>> pyfile.close()

然后,我手動編輯 pyfile 看起來像


img = '\x89PNG\r\n\x1a\n[remainder skipped for brevity]'

print(img)

最后但并非最不重要的是,我運行了以下代碼:


    cmd := exec.Command("python", "sample.py")

    stdout, err := cmd.StdoutPipe()

    if err != nil {

        panic(err)

    }

    err = cmd.Start()

    if err != nil {

        panic(err)

    }


    body, err := ioutil.ReadAll(stdout) //I need the image in []byte

    cmd.Wait()


    if err != nil {

        log.Fatalf("error reading bytes: %s", err)

    }


    log.Printf("Read %d bytes", len(body))


    o, err := os.OpenFile("img.png", os.O_CREATE|os.O_TRUNC|os.O_WRONLY, 0660)

    if err != nil {

        log.Fatalf("opening img.png: %s", err)

    }

    defer o.Close()

    n, err := o.Write(body)


    if err != nil {

        log.Fatalf("writing image to file: %s", err)

    }

    if n < len(body) {

        log.Fatal("short write")

    }

完整代碼可在https://gist.github.com/mwmahlberg/eb47495f68bed4e3cb8073447efdb53d下找到


我想可以肯定的是,您在 Python 文件中存儲圖像數據的方式有些奇怪。


查看完整回答
反對 回復 2023-07-26
  • 1 回答
  • 0 關注
  • 149 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號