为了账号安全,请及时绑定邮箱和手机立即绑定

将参数传递给 cmd.exec 函数

将参数传递给 cmd.exec 函数

Go
月关宝盒 2022-08-01 17:24:52
我想阅读多个PDF文件的文本。我找不到合适的Go lib,所以我使用PDF2Text工具,并编写了以下代码:package mainimport (    "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)但它不起作用,没有执行任何内容,没有抛出任何错误。
查看完整描述

1 回答

?
慕姐8265434

TA贡献1813条经验 获得超2个赞

问题是因为两个输出文件夹都有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)

        }

    }


查看完整回答
反对 回复 2022-08-01
  • 1 回答
  • 0 关注
  • 113 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号