猿问

将参数传递给 cmd.exec 函数

我想阅读多个PDF文件的文本。我找不到合适的Go lib,所以我使用PDF2Text工具,并编写了以下代码:


package main


import (

    "fmt"

    "log"

    "os"

    "os/exec"

    "path/filepath"

)


func main() {

    var files []string


    root := "."

    err := filepath.Walk(root, func(path string, info os.FileInfo, err error) error {

        if info.IsDir() {

            return nil

        }

        if filepath.Ext(path) != ".pdf" {

            return nil

        }

        files = append(files, info.Name())

        return nil

    })

    if err != nil {

        panic(err)

    }

    for _, file := range files {

        fmt.Println(file)

        cmd := exec.Command("pdf2text", "-o", "files", file)

        err := cmd.Run()

        if err != nil {

            log.Fatalf("cmd.Run() failed with %s\n", err)

        }

    }

}

这是工作文件,并将所有pdf文件提取到文件夹“files”中,但是由于此工具的演示版本将pdf文件提取到多个文本文件(每页文件),我希望PDF文件提取到的文件夹与文件名本身相同,因此我尝试替换:


cmd := exec.Command("pdf2text", "-o", "files", file)


cmd := exec.Command("pdf2text", "-o", file, file)

但它不起作用,没有执行任何内容,没有抛出任何错误。


月关宝盒
浏览 114回答 1
1回答

慕姐8265434

问题是因为两个输出文件夹都有ext,所以理解我正在转换2个同名的pdf。.pdfpdf2txt为了解决这个问题,我从第一个字符串中删除了ext,该字符串将用于输出目录名称,因此我的代码变成了:.pdfstrings.Split    for _, file := range files {        fmt.Println(file)        s := strings.Split(file, ".")        cmd := exec.Command("pdf2text", "-o", s[0], file)        err := cmd.Run()        if err != nil {            log.Fatalf("cmd.Run() failed with %s\n", err)        }    }
随时随地看视频慕课网APP

相关分类

Go
我要回答