Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/http/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Go 即使两个文件名完全相同,也没有找到文件错误?_Go - Fatal编程技术网

Go 即使两个文件名完全相同,也没有找到文件错误?

Go 即使两个文件名完全相同,也没有找到文件错误?,go,Go,我在Go中编写了一个爬虫程序,它在trendmicro网站上搜索安全报告(pdf格式),然后在找到pdf时使用wget下载pdf。之后,我使用从github()找到的库将pdf翻译成文本,然后将文本打印到终端。出于某种原因,该代码在前两个pdf中运行良好,但一旦它进入第三个pdf,它就会说找不到pdf,尽管它与其他pdf下载相同,并且位于同一目录中。程序跟踪如下所示: HTTP request sent, awaiting response... 200 OK Length: 2268867 (

我在Go中编写了一个爬虫程序,它在trendmicro网站上搜索安全报告(pdf格式),然后在找到pdf时使用wget下载pdf。之后,我使用从github()找到的库将pdf翻译成文本,然后将文本打印到终端。出于某种原因,该代码在前两个pdf中运行良好,但一旦它进入第三个pdf,它就会说找不到pdf,尽管它与其他pdf下载相同,并且位于同一目录中。程序跟踪如下所示:

HTTP request sent, awaiting response... 200 OK
Length: 2268867 (2.2M) [application/pdf]
Saving to: ‘rpt-2016-annual-security-roundup-a-record-year-for-enterprise-threats.pdf’

rpt-2016-annual-sec 100%[===================>]   2.16M  1.02MB/s    in 2.1s    

2019-02-20 15:25:07 (1.02 MB/s) - ‘rpt-2016-annual-security-roundup-a-record-year-for-enterprise-threats.pdf’ saved [2268867/2268867]

2019/02/20 15:25:07 open rpt-2016-annual-security-roundup-a-record-year-for-enterprise-threats.pdf : no such file or directory
exit status 1
我区分了这两个字符串,看看它们是否不同,但它们不是。再说一次,前两个下载很好。以下是代码中受影响的部分:

pdfName := strings.Replace(link, "https://documents.trendmicro.com/assets/rpt/", "", -1)
fmt.Printf("PDF name: %s\n", pdfName)
existingPdf := 0;
if len(pdfs) > 0 {
    for i := 0; i < len(pdfs); i++ {
        if pdfs[i] == pdfName {
            existingPdf = 1;
        }
    }
}
if existingPdf == 0 {
    pdfs = append(pdfs, pdfName)
    command := "wget " + link
    cmd := exec.Command("/bin/bash", "-c", command, ">",  "/dev/null", "2>&1")
    cmd.Stdout = os.Stdout
    cmd.Stderr = os.Stderr
    cmd.Run()
    res, err := docconv.ConvertPath(pdfName)
    if err != nil {
        log.Fatal(err)
    }
    fmt.Println(res)
}
pdfName:=字符串。替换(链接,“https://documents.trendmicro.com/assets/rpt/", "", -1)
fmt.Printf(“PDF名称:%s\n”,pdfName)
现有PDF:=0;
如果len(pdf)>0{
对于i:=0;i”、“/dev/null”、“2>&1”)
cmd.Stdout=os.Stdout
cmd.Stderr=os.Stderr
cmd.Run()
res,err:=docconv.ConvertPath(pdfName)
如果错误!=零{
log.Fatal(错误)
}
fmt.Println(res)
}

如果您想要完整的代码和/或想要运行它,我已经将其放在pastebin()

中,您不能将
“>”、“/dev/null”、“2>&1”
作为参数传递给bash,如果您想让bash将它们解释为
命令的一部分,它们必须在
命令中,但不幸的是,它没有阻止FNF的错误不,那只是我看到的一个基本错误。另外,为什么您首先要使用
wget
,而不是直接下载文件?我会确保所有内容都在同一个工作目录中,并从命令行验证该文件是否存在。
wget
不错,它只是为您的问题添加了更多变量。GoHTTP包工作得非常好。您是否验证了shell将为您剥离的名称中没有隐藏的空格?空格很可能位于末尾,而不是连字符所在的位置。只需使用
fmt.Printf(“PDF名称:%q\n”,pdfName)
而不是猜测哪些字符可能在那里,哪些字符可能不在那里。您不能将
“>”、“/dev/null”、“2>&1”作为参数传递给bash,如果希望bash将它们解释为
命令的一部分,它们必须在
命令中。我从命令中删除了重定向,但不幸的是,它没有阻止FNF的错误不,那只是我看到的一个基本错误。另外,为什么您首先要使用
wget
,而不是直接下载文件?我会确保所有内容都在同一个工作目录中,并从命令行验证该文件是否存在。
wget
不错,它只是为您的问题添加了更多变量。GoHTTP包工作得非常好。您是否验证了shell将为您剥离的名称中没有隐藏的空格?空格很可能位于末尾,而不是连字符所在的位置。只需使用
fmt.Printf(“PDF名称:%q\n”,pdfName)
,而不是猜测其中可能包含或不包含哪些字符。