我想读取用户输入并将其用作命令的参数。我得到了这段代码:
package main
import (
"bufio"
"fmt"
"log"
"os"
"os/exec"
)
func main() {
reader := bufio.NewReader(os.Stdin)
fmt.Print("Enter img path: ")
imgPath, _ := reader.ReadString('\n')
args := []string{imgPath, "stdout", "-l spa+eng"}
out, err := exec.Command("tesseract", args...).Output()
if err != nil {
log.Fatal(err)
}
fmt.Println(string(out))
}
但是当我执行它时会输出一个错误,说明退出状态1 。
如果不是使用变量 imgPath 作为参数,我会将一些文本直接写入数组,它就像魅力一样。
答案 0 :(得分:0)
以下代码返回带有分隔符的行(我在Windows上工作,其EOL为'\ r \ n'),这是我在控制台上打印时未显示的内容。
reader := bufio.NewReader(os.Stdin)
imgPath, _ := reader.ReadString('\n')
在我的情况下,在我从输入中修剪'\ r \ n'后它最终工作了:
package main
import (
"bufio"
"fmt"
"log"
"os"
"os/exec"
)
func main() {
reader := bufio.NewReader(os.Stdin)
fmt.Print("Enter img path: ")
imgPath, _ := reader.ReadString('\n')
imgPath= strings.TrimRight(line, "\r\n")
args := []string{imgPath, "stdout", "-l spa+eng"}
out, err := exec.Command("tesseract", args...).Output()
if err != nil {
log.Fatal(err)
}
fmt.Println(string(out))
}