Golang 调用 python文件

主要是go利用 `os/exec` 库,执行带参命令,并获取py执行结果

1. 编写 python

demo.py:

#!/usr/bin/python3
# -*- coding: UTF-8 -*-


import sys, getopt

def main(argv):
    inputFile = ''
    outputFile = ''
    try:
      opts, args = getopt.getopt(argv,"hi:o:",["inputFile=","outputFile="])
    except getopt.GetoptError:
      print ('test.py -i <inputFile> -o <outputFile>')
      sys.exit(2)
    for opt, arg in opts:
        if opt in ("-i"):
            inputFile = arg
        elif opt in ("-o"):
            outputFile = arg
    print('输入的文件为:', inputFile)
    print('输出的文件为:', outputFile)


if __name__ == "__main__":
    main(sys.argv[1:])    
➜  go-python python3 demo.py -i input -o output
输入的文件为: input
输出的文件为: output

参考:

  1. Python命令行:getopt模块详解
  2. Python3 命令行参数

2. 编写 go

package main

import (
    "fmt"
    "os/exec"
)


func execPy(inputFile, outputFile string) (result string) {
    args := []string{"demo.py", "-i", inputFile, "-o", outputFile} 
    out, err := exec.Command("python3", args...).Output()
    if err != nil {
        return "Error"
    }
    result = string(out)
    return result
}

func main() {
    inputFile := "input"
    outputFile := "output"
    res := execPy(inputFile, outputFile)
    fmt.Println(res)
}

参考:

  1. golang中os/exec包用法
  2. Golang 执行Python脚本
  3. 进阶: Go学习笔记(八) | 使用 os/exec 执行命令

3. Test

添加新评论

请不要水评论

评论列表